키가 vim의 무언가에 바인딩되었는지 감지


89

키가 vim에서 어떤 일을하는지 알아내는 방법이 있는지 알고 싶습니다. :map사용자 정의 매핑을 보는 데 사용할 수 있다는 것을 알고 있지만 내장 항목에 대한 것이 있습니까?

예를 들어, 난 항상 있었다 CTRL- W나는 그것을 사용하지 않는 것을 생각했기 때문에, 탭 닫기에 바인딩. 반년 후, 내가 좋아하는, 그것을 사용하는 일부 시퀀스가 있다는 것을 발견 CTRL- W CTRL- S창을 분할은, 자신을 재교육하는 악몽이었다.


4
사용자 정의 매핑이 실수로 충돌의 말하기, 그것은 사용에 좋은 연습 정말 mapleader은
derenio

답변:


80

Randy Morris가 제안한 답변을 확인하면

:help index 

원하는 목록을 제공합니다.


매우 유용한! 좋은 당신은 단지 새로운 것을 배울 찌를 할 경우 모양을 갈 수있는 곳이 알고하는
JonnyRaa

41

기본 매핑을 확인하려면 :

:help index

사용자 또는 플러그인이 수행하는 다른 매핑의 경우 :

:map
:map!

에서 http://vim.wikia.com/wiki/Mapping_keys_in_Vim_- 튜토리얼 (Part_1) :

첫 번째 명령은 일반, 시각적 및 선택 및 운영자 보류 모드에서 작동하는 맵을 표시합니다. 두 번째 명령은 삽입 및 명령 줄 모드에서 작동하는 맵을 표시합니다.

일반적으로 위 명령의 출력은 여러 페이지에 걸쳐 있습니다. 다음 명령 세트를 사용하여 출력을 vim_maps.txt 파일로 리디렉션 할 수 있습니다.

:redir! > vim_maps.txt
:map
:map!
:redir END

새로운 버전의 Vim이 갑자기 더 나은 대안을 제공하지 않는 한, 이것이 포함 된 키맵과 사용자 지정 키맵을 모두 검색하는 유일한 방법 인 것 같습니다. mapcheck( 다른 답변 에서 언급했듯이 ) 또한 사용자 정의 키 바인딩 만 다룹니다. 텍스트 파일로 출력하는 것과 맵 체크의 주요 차이점은 텍스트 파일로 출력하거나 사용 :help index하면 /C-wVim에서 다음을 사용하여 무엇이든 찾을 수 있다는 것입니다C-w
Zoe

34

완전한 대답은 아니지만 :help map-which-keysvim이 사용자 지정 맵에서 사용하도록 권장하는 키 목록 을 확인하는 것이 좋습니다.

이 도움말 섹션에는 특정 키가 작업에 매핑되었는지 확인하는 방법에 대한 권장 사항이 있습니다.


19

키를 수동으로 설정 하고 vim에서 기본적으로 (/ 특정 컴파일 옵션에서) 이미 매핑 된 키를 찾으려면 :map!:map을 사용하십시오 :help 'char(-combination)'. (약간 주제에서 벗어 났지만 여전히 중요하다고 생각합니다 (제 생각에) : :scriptnames어떤 파일이 어떤 순서로 소싱되었는지 확인하는 데 사용 합니다.)


특정 명령을 트리거하는 키를 검색하려면 다음을 수행하십시오. : redir keys.txt : map : redir end 그런 다음 keys.txt를 열고 바인딩 된 명령을 검색하십시오.
Christian Oudard 2012 년

18

나는 훑어 :help index보고 사용하지 않는 nmap키 목록을 만들었습니다 .

  • Q ( "Ex"모드로 전환)
  • Z (ZZ, ZQ 제외)
  • \
  • <Space>( l일반 모드에서 와 동일 , 일반 모드에서 가장 크고 가장 적게 사용되는 키)
  • gb, gc, gl, gx, gy, gz
  • gs (절전)
  • zp, zq, zu, zy
  • cd, cm, co, cp, cq, cr, cs, cu, cx, cy
  • dc, dm, do, dp, dq, dr, ds, du, dx, dy
  • gA, gB, gC, gG, gK, gL, gM, gO, gS, gX, gY, gZ
  • zB, zI, zJ, zK, zP, zQ, zP, zS, zT, zU, zV, zY, zZ
  • ] a,] b,] e,] g,] h,] j,] k,] l,] n,] o,] q,] r,] t,] u,] v,] w,] x ,] y
  • [a, [b, [e, [g, [h, [j, [k, [l, [n, [o, [q, [r, [t, [u, [v, [w, [x] , [y
  • CTRL-G, CTRL-K
  • CTRL- \ a-z (확장 용으로 예약 됨)
  • CTRL- \ A-Z (사용되지 않음)

업데이트 / 댓글을 달아주세요.


12

mapcheck. :-를 사용할 수 있습니다 .

예를 들어 파일을 들여 쓰기 로 매핑 <CR> ,i하고 싶었습니다 gg=G. 이미 매핑이 있는지 확인하려면<CR> , i

if mapcheck("\<CR>", "I") == "" |echo "no mapping"

...하지만 이것은 매핑이 시퀀스의 일부인지 감지하지 않습니다.


"o"가 일반 모드에서 다음과 같이 바인딩되었는지 확인하려고했습니다. if mapcheck ( "o", "N") == ""| echo "no mapping"이지만 o가 "open new line"에 확실히 바인드 될 때 "no mapping"을보고합니다. 내가 잘못 사용하고 있습니까?
K. Norbert 2014 년

@ K.Norbert : 사용자 정의 매핑을 위해 이것을 믿습니다
전능하신 낙타 Moha
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.