MacVim: Zmodyfikuj kombinacje klawiszy poleceń, takie jak <d-f>


16

Mogę zmapować niewykorzystane kombinacje, takie jak <d-1> (Cmd + 1) w MacVim, ale istnieje wiele takich kombinacji <d-f>, <d-o> lub <d-b> które są już powiązane z elementami menu MacVim. Jeśli spróbuję przemapować te wewnątrz mojego .vimrc, nic się nie zmieni.

Czy jest jakiś sposób, aby zmapować te kombinacje wewnątrz MacVima, lub zatrzymać MacVima od przypisywania ich do elementów menu, aby były prawidłowo przekazywane do rdzenia Vima?

Odpowiedzi:


20

Znalazłem to: Command-T zaleca użycie następującego fragmentu:

if has("gui_macvim")
  macmenu &File.New\ Tab key=<nop>
  map <D-t> :CommandT<CR>
endif

Zasadniczo usuwasz mapowanie odpowiedniego elementu menu, a następnie możesz mapować skrót, który próbujesz mapować. (Nie jestem pewien, co robi ampersand; działa z nim i bez niego).

To musi należy umieścić w ~ / .gvimrc, a nie ~ / .vimrc! (Najwyraźniej ~ / .vimrc jest czytany zbyt wcześnie, więc (nie) mapowania zostaną zablokowane, jeśli je tam umieścisz.)


3
Próbowałem tego na bieżącej wersji MacVima (7.3) i nie działało. Skończyłem na $ VIMRUNTIME / menu.vim, szukając <D- i kładzenie && 0 na końcu otaczającej instrukcji if. Następnie skopiowałem zawartość do mojego .gvimrc i zastąpiłem <D-[^>]*> z <nop>.
dash-tom-bang

1
@ dash-torn-bang Hm, mój kod wydaje się nadal działać poprawnie z migawką 7.3 na Lion. Nie musiałem edytować menu.vim MacVima. Nie jestem pewien, dlaczego to działa dla mnie, ale nie dla ciebie ...
Jo Liss

1
Udało mi się go uruchomić bez ampersandu: macmenu File.Print key=<nop>
romaninsh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.