2011-01-18 12 views
15

Dlaczego nie mogę map przez któregokolwiek z poleceń map (* nmap, IMAP, etc) na Ctrl przez Ctrl naciśnięć klawiszy? W rzeczywistości okazuje się, że niektóre z nich, takie jak, są powiązane z na poziomie X-Window. W jaki sposób mam vim nadpisać te domyślne powiązania?vim: mapowanie ctrl-0 na ctrl-9?

znaczy, jeśli mam imap <C-3> fancystuffhere, wpisując Ctrl w trybie wstawiania stawia mnie w trybie normalnym, zamiast wstawiania „fancystuffhere”.

Jestem na Linux/X11.

Odpowiedz

20

Ponieważ zarówno vim i gvim użycie bajt kolejka zamiast kolejki zdarzeń keypress, więc podczas gdy wartości od 0x40 (@) do 0x5F (_) (w tym 0x41-0x5A (AZ) zakres) posiadają odpowiednie znaki sterujące (można dostać ich kody odejmując 0x40 od ​​ich wartości), nie można używać żadnych znaków powyżej tego zakresu i razem z C-. Jest to również powód, dlaczego C-S- dla kluczy alfanumerycznych nie działa nawet w gvim (klawisze funkcyjne generują więcej niż jeden bajt, więc może działać <C-S-F1>). Wymiana <C-3> z <ESC> odbywa się przez terminal, można spróbować przyporządkowując je w prawie każdej aplikacji gui i zobaczyć, że <Esc> nie zostanie odwzorowany ..

+0

Nie mogę uzyskać tych powiązań w systemie OS X El Capitan. Czy powinny działać w środowisku? Wydłużyłem wątek tutaj http://apple.stackexchange.com/q/235623/15504 –

+1

@Masi Czy moja odpowiedź jasno stwierdza, że ​​nie działają * z projektu *? W Neovim możesz je zmapować (choć nie sprawi, że zadziałają, musisz powiedzieć emulatorowi terminala, aby wyprowadził określone sekwencje specjalne), ale w Vimie * nigdy * działa. – ZyX

+0

Rozszerzyłem temat Gvima o klawisze stereo w OS X http://vi.stackexchange.com/q/7452/2923 Który emulator terminala jest najbardziej odpowiedni dla konkretnych sekwencji ucieczki? Czy domyślnie OS X będzie zarządzany? –

2

The Way I osiągnięcia tego celu w systemie Windows jest użycie AutoHotkey i przemapować CTRL + , ctrl + itp do ctrl + F1, ctrl + F2 itp

Wiem, że jesteś na Linuksie, więc nie ma dla ciebie zastosowania, ale pomyślałem, że wspomnę o nim dla wszystkich zainteresowanych.