Vim에서 키를 매핑하는 방법

Vim Eseo Kileul Maepinghaneun Bangbeob



Vim에서 키 매핑은 특정 작업을 수행하기 위해 특정 키에 키 또는 명령 집합을 할당하는 프로세스입니다. 예를 들어, 파일의 모든 행을 선택하려면 ggVG 명령을 내리려면 4개의 키를 눌러야 합니다. 한 번의 키 입력만으로 수행하는 것은 어떻습니까? Vim 키 매핑이 유용한 곳이 바로 여기입니다. 키 매핑은 Vim에서 자주 수행되는 많은 작업을 자동화하는 방법입니다. 그리고 당신도 들어본 적이 있을 것입니다. 어떤 일을 두 번 이상 한다면 자동화하세요!

이 종합 가이드에서는 Vim에서 키를 매핑하여 작업을 자동화하는 방법을 설명하겠습니다. 기본 키 맵 생성부터 고급 키 매핑까지, 영구적으로 만들고 제거하는 과정까지.

통사론

Vim에서 키를 매핑하려면 다음 구문이 사용됩니다.







<모드>맵 <인수>



위 구문에서:



<모드>지도 nmap, imap, vmap, xmap, cmap 또는 omap
<인수>* , ,

*위 구문에서 섹션은 선택 사항입니다.

Vim 특수 인수

Vim 특수 인수는 키맵에 추가 기능을 제공하는 데 사용되는 태그입니다. 이러한 인수는 :map 명령 뒤, {rhs} 및 {lhs} 앞에 나타납니다.



예를 들어 맵을 버퍼별로 만들려면 다음과 같은 방식으로 특수 인수를 사용합니다.

:지도 < 완충기 > < C-a > ggVG
<침묵> 키맵에서 에코된 메시지를 억제하려면
<버퍼> 맵을 특정 버퍼로 만들려면(현재 버퍼에 고유함)
<스크립트> 지도가 스크립트나 플러그인의 일부임을 나타냅니다.
<스페셜> *<> 표기법을 사용하여 매핑을 위한 특수 키(기능 키, Ctrl, Shift 및 기타 알파벳이 아닌 키)를 정의하는 데 사용됩니다.
<표현> 이는 매핑의 왼쪽이 표현식이고 오른쪽을 얻기 위해 평가되어야 함을 나타냅니다.
<고유> 로컬 지도와 글로벌 지도 중에서 지도를 고유하게 만들기 위해
<잠시만요> 맵에서 다음 명령 문자에 대한 대기를 건너뛰려면

Vim 특수 키 표기법은 다음 이미지에 언급되어 있습니다.

예를 들어 키 매핑에서 공백 키를 사용하려는 경우 표기법이 사용됩니다.

Vim에서 기본 키맵 만들기

기본 예제를 통해 Vim 키 매핑을 이해해 봅시다. 모든 줄 선택 명령을 매핑하고 싶습니다( ggVG ) 에게 Ctrl+A 열쇠. Ctrl+a 키를 매핑하기 위해 Vim에서 다음 명령을 실행하겠습니다.

:지도 < C-a > ggVG

여기, 을 의미한다 Ctrl 키 그리고 열쇠, 동안 ggVG 파일의 모든 줄을 선택하는 명령입니다. 그만큼 :지도 키워드는 기본적으로 일반 모드 매핑용이지만 :nmap 명시적으로 사용할 수도 있습니다. 정상 방법.

마찬가지로 줄 번호 토글 기능을 매핑하려면 F1 주요 용도:

:지도 < F1 > :번호 설정 !

이제 F1 키를 누르면 줄 번호가 활성화되고 다시 누르면 비활성화됩니다.

이 메서드는 현재 버퍼의 키만 매핑하며 버퍼를 닫으면 제거됩니다.

키맵 나열

일반, 시각적 및 운영자 보류 모드의 모든 키 매핑을 나열하려면 :map 명령을 사용하십시오.

:지도

키 매핑을 나열하려면 끼워 넣다 그리고 명령줄 모드에서는 :map!을 사용하세요. 명령.

:지도 !

특정 모드의 키 매핑을 나열하려면 맵 키워드 앞에 모드의 첫 문자를 입력하면 됩니다.

:nmap 일반 모드의 지도를 표시하려면
:imap 삽입 모드의 맵을 표시하려면
:vmap 시각적 맵과 선택 모드를 표시하려면
:스맵 선택 모드의 지도를 표시하려면
:xmap 시각적 모드의 지도를 표시하려면
:cmap 명령줄 모드의 맵을 표시하려면
:omap 운영자 보류 모드의 맵을 표시하려면

또한 경로가 포함된 플러그인 맵을 포함한 모든 맵을 나열하려면 다음을 사용하십시오. :자세한 지도 명령.

:자세한 지도

특정 키의 경우 명령( :자세한 지도 <키> ).

키맵을 영구적으로 만들기

위 섹션에서 언급된 키맵은 현재 버퍼의 키만 매핑합니다. 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 >

더 중요한 것은 지도를 만들고 싶다면 운영자 보류 모드 의 명령 삽입 모드 을 입력한 다음 해당 명령을 실행하려면 오른쪽에 있는 키를 눌러 삽입 모드를 종료하세요. 예를 들어, 다음 키맵에서 다음을 사용하여 3줄을 삭제하고 싶습니다. Ctrl+X 키를 누르고 삽입 모드로 다시 들어갑니다.

:inoremap < C-x > 3ddi

이제 Ctrl+X 키를 누르면 다음이 인쇄됩니다. 3ddi 명령을 실행하는 대신

문제를 해결하기 위해 다음을 삽입하겠습니다. 전에 3ddi 명령.

:inoremap < C-x > < Esc > 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 사용자 정의 명령 만들기
지도를 실행하기 위해 명령 모드로 들어가는 것은 덜 유용해 보입니다. 하지만 다음을 사용하여 Vim에서 자신만의 사용자 정의 명령을 만들 수 있습니다. :명령 옵션. 이 기능은 Vim 키 매핑과 매우 유사합니다. 예를 들어 줄 번호와 텍스트 너비를 80으로 설정하는 빠른 명령을 만들려면 다음 명령을 사용합니다.

:Mycmd 명령 :번호 설정 텍스트 너비 = 80

이제 명령 모드로 들어가서 다음을 실행하십시오. :Mycmd 명령.

운영자 보류 모드 매핑

운영자 보류 모드는 Vim이 운영자 키를 누른 후 모션 명령을 기다리는 모드입니다. 일반적인 연산자는 y, d, c입니다. 예를 들어, 현재 줄과 다음 3개 줄을 삭제하려면 다음과 같이 d 연산자를 사용합니다. 3j 모션(d3j). 원하는 작업을 수행하기 위해 이 키를 동시에 누를 수는 없습니다.

모드는 일반적으로 모션을 매핑하는 데 사용됩니다. 현재 라인과 그 뒤에 이어지는 3개의 라인을 선택하는 모션을 매핑해 보겠습니다.

:오노레맵 < F2 > 3j

이제 현재 줄과 그 뒤의 3개 줄을 잡아당기려면 다음을 사용하세요. theF2 열쇠도 같은 방법으로 연산자를 적용할 수도 있습니다.

명심해야 할 또 다른 중요한 점은 위에서 언급한 매핑된 모션에 개수를 추가하는 경우입니다. 2 , 지도에서는 ​​6j가 아닌 23j로 간주됩니다. 이 문제를 해결하려면 표현식 레지스터 “=를 사용할 수 있습니다. 위의 지도는 다음과 같이 수정될 수 있습니다. @='3j' .

:오노레맵 < F2 > @ ='3j' < CR >

마우스 이벤트를 매핑하는 방법

Vim은 완벽하게 사용자 정의 가능한 키보드 중심 텍스트 편집기이지만 마우스 기능을 사용할 수 있어 훨씬 더 좋습니다. 일반 키보드 키 외에 모든 마우스 이벤트도 Vim에서 매핑할 수 있습니다. 예를 들어, 오른쪽 두 번 클릭과 왼쪽 두 번 클릭을 매핑하여 마크를 각각 앞으로 및 뒤로 이동하려면 다음 매핑을 사용합니다.

:noremap < 2 -오른쪽 마우스 > ] `
:noremap < 2 -왼쪽마우스 > [ `

매핑할 수 있는 기타 마우스 이벤트는 다음 표에 나와 있습니다.

<왼쪽마우스> <왼쪽 릴리스> <왼쪽 드래그> <2-왼쪽마우스>
<오른쪽 마우스> <오른쪽 릴리스> <오른쪽 드래그> <2-오른쪽 마우스>
<미들마우스> <중간 릴리스> <중간드래그> <3-왼쪽마우스> <엑스원릴리스>
<3-오른쪽 마우스> <엑스투릴리스>
<4-왼쪽마우스>
<4-오른쪽 마우스>

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 파일에 있는 경우 파일에서 키맵을 제거하기만 하면 키 매핑이 해제됩니다.

현재 버퍼에서 매핑이 완료되면 다음을 사용하여 제거할 수 있습니다. :매핑 해제 또는 :지도 해제! 명령.

  • :매핑 해제 일반, 시각적, 선택 또는 운영자 보류 모드의 키맵을 지우려면
  • :지도 해제! 삽입 및 명령줄 모드의 키맵을 지우려면

예를 들어, 키를 사용하여 :매핑 해제 . 또한 키 제거는 모드별로 다를 수 있습니다. 일반 모드 맵을 제거하려면 :nunmap <키> . 키맵을 제거하는 다른 모드별 명령은 아래에 설명되어 있습니다.

:nunmap 지도를 제거하려면 정상 방법
:iunmap 지도를 제거하려면 끼워 넣다 방법
:vunmap 지도를 제거하려면 시각적 그리고 선택하다 방법
:썬맵 지도를 제거하려면 선택하다 방법
:xunmap 지도를 제거하려면 시각적 방법
:cunmap 지도를 제거하려면 명령줄 방법
:운맵 지도를 제거하려면 운영자 대기 중 방법

현재 버퍼의 모든 맵을 제거하려면 :맵클리어 명령.

:맵클리어

위 명령은 일반, 시각적, 선택 또는 운영자 보류 모드의 모든 키맵을 지웁니다.

삽입 및 명령줄 모드의 모든 키맵을 지우려면 다음을 사용하십시오.

:맵클리어 !

기본 Vim 명령은 지울 수 없지만 다음을 사용하여 비활성화할 수 있습니다. :매핑 해제 명령하다 <아니요> . 예를 들어 커서 아래 줄을 삭제하는 dd 기능을 비활성화하려면 다음을 사용하십시오. :unmap dd <아니요>.

:매핑 해제 dd < 아니요 >

dd는 현재 버퍼에서 더 이상 작동하지 않습니다. 이 방법을 사용하면 현재 세션에 대해 모든 키맵을 비활성화할 수 있습니다.

Vim 키 매핑 치트 시트

다음 이미지는 참조용으로 모든 명령과 특정 모드 목록을 제공합니다.

결론

Vim 키 매핑은 작업, 자주 사용되는 키 바인딩, 명령 및 기타 작업을 자동화하는 편리한 방법입니다. 이는 다양한 주제이며 이 가이드에서는 Vim의 키 매핑과 관련된 모든 주요 측면을 다루었습니다. 일반 구문부터 기본 키맵 생성, 고급 Vimscript 기능 및 외부 명령 매핑까지. Vim 키 매핑에 대해 자세히 알아보려면 다음을 사용하세요. :도움말 키 매핑 Vim에서 명령을 실행하세요.