이 종합 가이드에서는 Vim에서 키를 매핑하여 작업을 자동화하는 방법을 설명하겠습니다. 기본 키 맵 생성부터 고급 키 매핑까지, 영구적으로 만들고 제거하는 과정까지.
- 통사론
- Vim 특수 인수
- 기본 키맵 생성
- 키맵 나열
- 키맵을 영구적으로 만들기
- 재귀 방지
- 모드별 키맵 만들기
- 마우스 이벤트를 매핑하는 방법
- Vim에서 리더 키로 매핑하는 방법
- Vimscript 함수를 매핑하는 방법
- Vim에서 외부 명령을 매핑하는 방법
- Vim에서 키맵을 제거하는 방법
- Vim 키 매핑 치트 시트
- 결론
통사론
Vim에서 키를 매핑하려면 다음 구문이 사용됩니다.
<모드>맵 <인수>
위 구문에서:
<모드>지도 | nmap, imap, vmap, xmap, cmap 또는 omap | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
<인수>* | *위 구문에서 Vim 특수 인수Vim 특수 인수는 키맵에 추가 기능을 제공하는 데 사용되는 태그입니다. 이러한 인수는 :map 명령 뒤, {rhs} 및 {lhs} 앞에 나타납니다. 예를 들어 맵을 버퍼별로 만들려면 다음과 같은 방식으로 특수 인수를 사용합니다. :지도 < 완충기 > < C-a > ggVG
Vim 특수 키 표기법은 다음 이미지에 언급되어 있습니다.
예를 들어 키 매핑에서 공백 키를 사용하려는 경우 Vim에서 기본 키맵 만들기기본 예제를 통해 Vim 키 매핑을 이해해 봅시다. 모든 줄 선택 명령을 매핑하고 싶습니다( ggVG ) 에게 Ctrl+A 열쇠. Ctrl+a 키를 매핑하기 위해 Vim에서 다음 명령을 실행하겠습니다. :지도 < C-a > ggVG 여기, 마찬가지로 줄 번호 토글 기능을 매핑하려면 F1 주요 용도: :지도 < F1 > :번호 설정 !이제 F1 키를 누르면 줄 번호가 활성화되고 다시 누르면 비활성화됩니다. 이 메서드는 현재 버퍼의 키만 매핑하며 버퍼를 닫으면 제거됩니다. 키맵 나열일반, 시각적 및 운영자 보류 모드의 모든 키 매핑을 나열하려면 :map 명령을 사용하십시오. :지도키 매핑을 나열하려면 끼워 넣다 그리고 명령줄 모드에서는 :map!을 사용하세요. 명령. :지도 !특정 모드의 키 매핑을 나열하려면 맵 키워드 앞에 모드의 첫 문자를 입력하면 됩니다.
또한 경로가 포함된 플러그인 맵을 포함한 모든 맵을 나열하려면 다음을 사용하십시오. :자세한 지도 명령. :자세한 지도특정 키의 경우 명령( :자세한 지도 <키> ). 키맵을 영구적으로 만들기위 섹션에서 언급된 키맵은 현재 버퍼의 키만 매핑합니다. Vim 키 매핑을 영구적으로 만들려면 해당 맵을 vimrc 파일에 배치해야 합니다.
키맵을 vimrc 파일 앞에 콜론(:)을 추가하지 마십시오. 지도 명령. 키맵을 배치한 후 vimrc 파일을 저장하고 :wq 명령을 사용하거나 Shift+zz 키를 사용하여 종료합니다. 키맵은 vimrc 파일은 전역적이며 모든 Vim 세션에서 사용될 수 있습니다. 그러나 특정 키맵이 현재 세션의 작업에 영향을 미치는 경우 일시적으로 비활성화될 수 있습니다. 아래 Vim에서 키맵을 제거하는 방법 섹션을 참조하세요. 그만큼 vimrc 다양한 명령과 설정이 포함된 Vim의 설정 파일입니다. 그것은에 존재합니다 /usr/공유/vim/ macOS의 디렉토리 및 /etc/vim 리눅스에서. 다음 사항에 유의하는 것이 중요합니다. vimrc 언급된 디렉터리의 파일은 시스템별 파일입니다. 키 매핑을 위해 이 파일을 편집할 수도 있지만 사용자별 파일을 만드는 것이 좋습니다. vimrc 홈 디렉토리에 있는 파일입니다. 재귀 방지계속 진행하기 전에 Vim 키 매핑의 재귀에 대해 배우는 것이 중요합니다. 단점과 예방방법. 예를 사용하여 이해할 수 있습니다. :지도 dd 3jdd위의 예에서는 다음을 매핑했습니다. dd 키를 누르면 3줄 아래로 이동하고 커서 아래의 줄을 삭제합니다. 이제 dd , 지도 실행을 시도합니다. 3jdd . Vim이 다음을 해석할 것입니다. dd 다음 그림과 같이 맵으로 명령을 내리고 맵을 반복적으로 실행합니다.
메모 : 재귀로 인해 Vim 편집기가 정지될 수 있습니다. 고정을 해제하려면 다음을 누르세요. Ctrl+C 열쇠. 재귀를 방지하려면 지도 키워드 노맵 , 어디 ' 노레 ' 수단 비재귀적 . 나는 지도 키워드 노맵 위 키맵의 재귀를 수정합니다. :noremap dd 3jdd나는 사용하는 것이 좋습니다 노맵 대신에 지도 실수로 재귀 매핑을 만드는 것을 방지합니다. 모드별 키맵 만들기Vim은 키 매핑을 매우 다양하게 만들어 특정 모드의 키맵도 아주 쉽게 만들 수 있습니다. 예를 들어, F1 키를 입력하면 동일하게 매핑할 수 있습니다. F1 완전히 새로운 작업을 위해 다른 모드로 키를 누르세요. 다음 예에서는 F1 3줄 삭제 키 정상 모드를 선택하고 3줄을 잡아당깁니다. 끼워 넣다 방법. :nmap < F1 > 3dd:imap < F1 > < C-t > 첫 번째 맵은 일반 모드에서 F1 키를 누르면 세 줄을 삭제하고, 두 번째 맵은 삽입 모드에서 동일한 키를 사용할 때 현재 줄에 한 개의 들여쓰기를 추가합니다. 이제 각 모드별 매핑을 살펴보겠습니다. 일반 모드 매핑일반 모드에서 지도를 적용하려면 nmap 예어. 예를 들어, 다음을 사용하여 파일의 모든 행을 복사하려면 Ctrl+C 키를 사용하려면 다음 명령을 사용하겠습니다. :nmap < CC > ggVGy앞에서 설명한 것처럼 비재귀적 방법을 사용하여 키를 매핑하는 것이 가장 좋습니다. nmap ~와 함께 노레맵 예어. :noremap < CC > ggVGy콜론(:) 없이 입력하세요. vimrc 파일을 영구 키맵으로 만듭니다. 나는 사용할 것이다 노맵 대신에 지도 다음 예에서는. 삽입 모드 매핑삽입 모드에 대한 키를 매핑하려면 다음을 사용하십시오. 나 대신에 N . 예를 들어, 삽입 모드에서는 Ctrl+P 그리고 Ctrl+N 키는 각각 역방향 및 순방향 일치를 기반으로 단어를 자동 완성하는 데 사용됩니다. 매핑하려면 Ctrl+P 키와 탭 키를 함께 사용하려면 다음 명령을 사용하겠습니다. :inoremap < 탭 > < CP > 더 중요한 것은 지도를 만들고 싶다면 운영자 보류 모드 의 명령 삽입 모드 을 입력한 다음 이제 Ctrl+X 키를 누르면 다음이 인쇄됩니다. 3ddi 명령을 실행하는 대신
문제를 해결하기 위해 다음을 삽입하겠습니다. 이제 명령은 삽입 모드를 유지하도록 실행됩니다. 많은 미니 노트북에는 Esc 키는 현재 모드를 종료하는 데 중요합니다. 그래서 지도를 작성하려면 Esc 키를 눌러 삽입 모드를 종료하면 키 매핑을 활용할 수 있습니다. 다음 예에서는 전- 일반 모드로 나가려면 키를 누르세요. :inoremap ex < Esc >빠르게 누르시면 전- 키를 누르면 삽입 모드가 종료되어 일반 모드로 들어갑니다. 시각적 모드 매핑시각적 모드는 Vim 편집기에서 텍스트를 선택하는 데 매우 중요한 모드입니다. 시각적 모드에는 기본 선택 외에도 시각적 라인, 시각적 블록 모드와 같은 다른 모드가 있습니다. 시각적 모드에서는 물결표 (~) 케이스를 전환하는 데 사용됩니다. 물결표(~)를 사용하려면 두 개의 키를 눌러야 합니다. (시프트+~) . 다음 예에서는 c 키를 매핑합니다. 시각적 모드 커서 아래에 있는 단어를 선택하고 대소문자를 변경합니다. :vnoremap c iw~이제 다음 GIF와 같이 v를 눌러 시각적 모드로 들어가고 c 키를 눌러 커서 아래의 단어를 전환합니다.
명령줄 모드 매핑많은 Vim 필수 명령은 명령줄 모드에서만 작동합니다. 예를 들어, 파일을 저장하려면 :안에 마찬가지로 저장하고 종료하는 데에도 명령이 사용됩니다. :wq 명령이 사용됩니다. 모든 탭과 분할 작업도 명령줄 모드에서 수행됩니다. 예를 들어 새 탭을 만들려면 : 부하 명령이 사용됩니다. 자, 빠르게 탭을 만들려면, Ctrl+T 열쇠는 충분합니다. :cnoremap < C-t > 주제 < CR >이제 콜론(:)을 눌러 명령줄 모드로 들어간 다음 Ctrl+T 새 탭을 열려면 전체를 입력하는 것보다 훨씬 빠릅니다. 주제 명령과 반품 열쇠.
Vim 사용자 정의 명령 만들기 이제 명령 모드로 들어가서 다음을 실행하십시오. :Mycmd 명령. 운영자 보류 모드 매핑운영자 보류 모드는 Vim이 운영자 키를 누른 후 모션 명령을 기다리는 모드입니다. 일반적인 연산자는 y, d, c입니다. 예를 들어, 현재 줄과 다음 3개 줄을 삭제하려면 다음과 같이 d 연산자를 사용합니다. 3j 모션(d3j). 원하는 작업을 수행하기 위해 이 키를 동시에 누를 수는 없습니다. 모드는 일반적으로 모션을 매핑하는 데 사용됩니다. 현재 라인과 그 뒤에 이어지는 3개의 라인을 선택하는 모션을 매핑해 보겠습니다. :오노레맵 < F2 > 3j이제 현재 줄과 그 뒤의 3개 줄을 잡아당기려면 다음을 사용하세요. theF2 열쇠도 같은 방법으로 디 연산자를 적용할 수도 있습니다. 명심해야 할 또 다른 중요한 점은 위에서 언급한 매핑된 모션에 개수를 추가하는 경우입니다. 2 마우스 이벤트를 매핑하는 방법Vim은 완벽하게 사용자 정의 가능한 키보드 중심 텍스트 편집기이지만 마우스 기능을 사용할 수 있어 훨씬 더 좋습니다. 일반 키보드 키 외에 모든 마우스 이벤트도 Vim에서 매핑할 수 있습니다. 예를 들어, 오른쪽 두 번 클릭과 왼쪽 두 번 클릭을 매핑하여 마크를 각각 앞으로 및 뒤로 이동하려면 다음 매핑을 사용합니다. :noremap < 2 -오른쪽 마우스 > ] `:noremap < 2 -왼쪽마우스 > [ ` 매핑할 수 있는 기타 마우스 이벤트는 다음 표에 나와 있습니다.
Vim에서 리더 키를 사용하여 매핑하는 방법리더 키가 없으면 Vim 매핑이 불완전합니다. 리더 키는 다른 작업을 수행하기 위해 매핑된 경우에도 키를 매핑하는 데 사용할 수 있는 기본 키입니다. 예를 들어, 다음을 매핑한 경우 디 키를 사용하여 모든 라인을 삭제한 다음 리더 키를 사용하여 동일한 키를 매핑하여 5개 라인만 삭제할 수 있습니다. 익숙하지 않은 분들을 위해 Vim 리더 키를 사용해 보세요. 명령이나 작업을 매핑하기 위해 다른 키나 키 집합이 앞에 붙는 키입니다. Vim의 기본 리더 키는 백슬래시(\)이지만 사용자 정의할 수 있습니다. 예를 들어, dd 명령은 커서 아래의 줄을 삭제하는 데 사용됩니다. 지도를 작성하고 싶다면 dd 명령을 사용하여 파일의 모든 줄을 삭제한 다음 리더 키를 사용할 수 있습니다. :noremap < 지도자 > dd ggVGd이제 버튼을 누를 때마다 \dd 키를 누르면 파일의 모든 줄이 삭제됩니다. Vim 리더 키를 Windows에서는 Ctrl 키로, macOS에서는 Command 키로 지정할 수 있습니다. Vimscript 함수를 매핑하는 방법Vim 편집기는 명령이나 작업에만 국한되지 않습니다. Vim에는 Vimscript라는 사용자 정의 기능을 만들기 위한 전체 프로그래밍 언어가 있습니다. 쉽게 스크립트나 함수를 생성하고 이를 키에 매핑할 수 있습니다. 예를 들어 줄 번호, 마우스 기능, 텍스트 너비와 같은 설정을 활성화하는 함수를 만들어 보겠습니다. 기능 내 설정 ( )세트 숫자 세트 생쥐 =a 세트 텍스트 너비 = 80 최종 기능 이 함수를 vimrc 파일에 넣으세요. 이 기능을 리더와 s 키로 매핑해 보겠습니다. 나는 사용할 것이다 :noremap < 지도자 > s :MySettings에 전화하세요 ( ) < CR >이제 버튼을 누를 때마다 \에스 키를 누르면 함수가 호출되고 함수 내부의 모든 기능이 실행됩니다. 메모 : Vim에서 사용자 정의 함수를 생성하는 동안 함수 이름의 첫 글자는 항상 대문자로 시작해야 합니다. Vim에서 외부 명령을 매핑하는 방법Vim에서는 외부 명령을 매핑할 수도 있습니다. 외부 명령은 Linux 또는 Unix 명령을 나타냅니다. 예를 들어, 외부를 매핑하려는 경우 종류 현재 버퍼의 모든 라인을 정렬하는 명령 F1 키를 사용하려면 다음 명령을 사용하세요. :noremap < F1 > : %! 종류 < CR >같은 방식으로 스크립트 파일을 작성하고 Vim 세션을 종료하지 않고 실행 가능하게 만드는 경우 다음을 사용할 수 있습니다. chmod 내부적으로 명령을 내립니다. 예를 들어, 현재 파일을 실행 가능하게 만들려면 다음 명령을 실행할 수 있습니다. :!chmod +x % 빔에서. 이 작업을 자주 수행하는 경우 해당 작업에 키를 매핑하면 됩니다. :noremap < F1 > : ! chmod +x %Vim에서는 느낌표(!) 기호와 함께 모든 외부 명령을 사용할 수 있습니다. Vim에서 키맵을 제거하는 방법Vim에서 키맵을 제거하려면 먼저 키맵이 정의된 위치를 식별하세요. 앞서 설명한 대로 키맵은 버퍼 로컬 및 영구적일 수 있습니다. 키맵이 영구적이고 vimrc 파일에 있는 경우 파일에서 키맵을 제거하기만 하면 키 매핑이 해제됩니다. 현재 버퍼에서 매핑이 완료되면 다음을 사용하여 제거할 수 있습니다. :매핑 해제 또는 :지도 해제! 명령.
예를 들어,
현재 버퍼의 모든 맵을 제거하려면 :맵클리어 명령. :맵클리어위 명령은 일반, 시각적, 선택 또는 운영자 보류 모드의 모든 키맵을 지웁니다. 삽입 및 명령줄 모드의 모든 키맵을 지우려면 다음을 사용하십시오. :맵클리어 !기본 Vim 명령은 지울 수 없지만 다음을 사용하여 비활성화할 수 있습니다. :매핑 해제 명령하다 <아니요> . 예를 들어 커서 아래 줄을 삭제하는 dd 기능을 비활성화하려면 다음을 사용하십시오. :unmap dd <아니요>. :매핑 해제 dd < 아니요 >dd는 현재 버퍼에서 더 이상 작동하지 않습니다. 이 방법을 사용하면 현재 세션에 대해 모든 키맵을 비활성화할 수 있습니다. Vim 키 매핑 치트 시트다음 이미지는 참조용으로 모든 명령과 특정 모드 목록을 제공합니다.
결론Vim 키 매핑은 작업, 자주 사용되는 키 바인딩, 명령 및 기타 작업을 자동화하는 편리한 방법입니다. 이는 다양한 주제이며 이 가이드에서는 Vim의 키 매핑과 관련된 모든 주요 측면을 다루었습니다. 일반 구문부터 기본 키맵 생성, 고급 Vimscript 기능 및 외부 명령 매핑까지. Vim 키 매핑에 대해 자세히 알아보려면 다음을 사용하세요. :도움말 키 매핑 Vim에서 명령을 실행하세요. |