2011-11-10 11 views
7

Niedawno zmieniłem na używanie Maca w pracy z poprzednio używanego systemu Linux. Dowiedziałem się o MacVim (od http://code.google.com/p/macvim/) i próbowałem przenieść port na moje poprzednie klawisze.Niektóre mapowania klawiszy nie działa w komputerze MacVim

odwzorowania używałem miały przedstawiają się następująco:

  • Ctrl-T: Nowa zakładka
  • Ctrl-W: Zamknij kartę/okno
  • Ctrl-1. .. Ctrl-0: Przełącz na kartę z numerami
  • Alt-Up: Nowa karta (tak samo jak Ctrl-T)
  • Alt-Left/Alt-Right: Przełącz do poprzedniej/następnej zakładki
  • Ctrl-Alt-E: Open FuzzyFinder w pliku tryb
  • Ctrl-Alt-B: Otwarta FuzzyFinder w trybie buforowania
  • Ctrl-Alt-w: Przezroczysta tylna odstępy z bufora

Teraz, aby uczynić te odwzorowania bardziej "jak Mac", zdecydowałem się przełączyć pierwsze dwa, aby skorzystać z opcji (np. Apple logo) i wszystkie pozostałe, aby użyć klawisza polecenia zamiast Alt (np. Ctrl-Alt-E stanie się Ctrl-Command-E). Przeczytałem na http://macvim.org/OSX/index.php, że ten klucz można odwzorować za pomocą D (ie). Nowe zawartość mojego .vimrc jest następujący:

nmap <D-t> :tabnew<cr> 
nmap <D-w> :close<cr> 
nmap <D-1> 1gt 
nmap <D-2> 2gt 
nmap <D-3> 3gt 
nmap <D-4> 4gt 
nmap <D-5> 5gt 
nmap <D-6> 6gt 
nmap <D-7> 7gt 
nmap <D-8> 8gt 
nmap <D-9> 9gt 
nmap <D-0> 10gt 

nmap <D-Up> :tabnew<CR> 
nmap <D-Right> :tabnext<CR> 
nmap <D-Left> :tabprevious<CR> 

"FuzzyFinder 
nmap <C-D-e> :FufFileWithFullCwd<CR> 
nmap <C-D-b> :FufBuffer<CR> 

"Whitespace remover 
nmap <C-D-w> :%s/\s\+$//<CR> 

Więc po ponownym mapowanie klawiszy, niektórzy teraz pracować, a inni nie, bez jasnej logiki, dlaczego.

Co działa:

  • Cmd-T i Cmd-W powodzeniem działa na kartach otwierania i zamykania.
  • Cmd-1 ... Cmd-0 z powodzeniem działa na przełączanie kart.

Co nie działa:

  • CMD-Up do otwierania kartę nie działa.
  • Cmd-Left i Cmd-Right do przełączania kart nie działa.
  • Ctrl-Cmd-E i Ctrl-Cmd-B do otwierania FuzzyFinder nie działają.
  • Ctrl-Cmd-W do usuwania białych znaków nie działa (ale ani nie zamknąć kartę, jak to będzie bez ctrl.
+0

Możesz przyjąć własną odpowiedź, jeśli znalazłeś to rozwiązanie samodzielnie. ;) – sjas

+0

Istnieje [przyczyna] (http://learnvimscriptthehardway.stevelosh.com/chapters/05.html), aby zawsze używać '* nore (map | abbrev)' (np. 'Nnoremap') i nigdy' nmap'. – ZyX

+0

Dzięki ZyX za radę. Wydaje mi się, że kiedy dostanę szansę, przeczytam całość "Ucz się Vim Script na twardą drogę"! –

Odpowiedz

5

Tak więc okazuje się, że istnieje bu g w Macvim (http://code.google.com/p/macvim/issues/detail?id=317), co oznacza, że ​​nie można mapować klawisza Ctrl. Zamiast tego zamapowałem klucz lidera (a.k.a. backslash) i wszystko wydaje się działać teraz.

+0

Witam @ Joel Cross, czy możesz mi powiedzieć, jak rozwiązać ten problem w sposób bardziej konkretny? Próbuję odwzorować klucz na ctrl + command + w. dzięki – bean

+0

Cześć Joel, czy mógłbyś powiedzieć mi więcej szczegółów jak mapować Ctrl + Command + w? – bean

+0

Niestety mam na myśli mapowanie klawisza takiego jak F na ctrl + command + w, a nie na odwrót – bean

7

zbadać przyczynę wykonując

:verbose map <D-Up> 

Dodatkowo spróbuj wybiórczo włączyć inne wtyczki, aby zobaczyć, czy odwzorowania są czyszczone w jakiś sposób

+0

* Ostatni zestaw z /Applications/MacPorts/MacVim.app/Contents/Resources/vim/gvimrc –

+0

Wygląda na to, że plik globalny przesłania moją konfigurację. Jestem jednak zaskoczony, ponieważ myślałem, że moja konfiguracja użytkownika będzie miała pierwszeństwo. –

+0

Dodałem wiersz "let macvim_skip_cmd_opt_movement = 1" do mojego .vimrc, a teraz karty działają poprawnie. Trzy ostatnie polecenia (te, które używają kombinacji ctrl-cmd) nadal nie działają. –

Powiązane problemy