2011-12-13 25 views
10

Istnieje opinia, że ​​podczas pracy w vimie nie powinieneś używać klawisza Esc (użyj ctrl + c zamiast) i nie używaj klawiszy strzałek (użyj h, j, k, l) na twojej klawiaturze. Ale trudno nie używać tych kluczy. Myślałem, że jest sposób na wyłączenie tych kluczy w .vimrc, więc nie będzie innej opcji niż ctrl + c i hjkl.Jak wyłączyć klawisze Esc i kursora w vim

Szukałem trochę i znalazłem rozwiązanie na tym link. Więc ja dodaje się następujące w moim .vimrc pliku:

inoremap <Up>  <NOP> 
inoremap <Down> <NOP> 
inoremap <Left> <NOP> 
inoremap <Right> <NOP> 
inoremap <Esc> <NOP> 
noremap <Up>  <NOP> 
noremap <Down> <NOP> 
noremap <Left> <NOP> 
noremap <Right> <NOP> 
noremap <Esc> <NOP> 

Ale to nie działa. Dodanie tego do mojego .vimrc łamie moje mapowanie na klucze funkcyjne . Kolejny problem polega na tym, że nie blokuje on funkcji klawiszy strzałek, a gdy naciśniesz Dół w trybie normalnym wykonuje się wiele akcji - kursor przesuwa się w górę o jedną linię, tworzona jest nowa linia i wstawiany jest znak "B".

Jak mogę wyłączyć w moim vimie 7.2 klawisze kursora i klawisz Esc bez naruszania czegokolwiek innego?

+8

Choć nie może być tak, że opinia, że ​​opinia jest po prostu błędne. 'Ctrl-c' nie działa tak samo jak' Esc' lub 'Ctrl- [' do. Być może już to rozumiesz, ale na wypadek, gdyby ktoś czytający to nie zrobił, 'Ctrl-c' pomija zarówno zdarzenie autocmd' InsertLeave', jak również rozszerza wszelkie oczekujące skróty trybu wstawiania. Oznacza to, że wszystkie skrypty, których używasz, zależą od tych funkcji, zostaną zerwane, jeśli zaczniesz używać 'Ctrl-c', aby opuścić tryb wstawiania, zamiast robić to poprawnie. Krótko mówiąc, przyzwyczajanie się do tego jest złym nawykiem i zdecydowanie odradzam. –

+0

@RandyMorris czy masz jakiekolwiek wątpliwości dotyczące ponownego przypisywania klawiszy strzałek? – Robz

+0

@Robz w ogóle nie udostępniają duplikatu mapowania, więc są świetnym kandydatem do mapowania na coś bardziej użytecznego. –

Odpowiedz

15

Jeśli używasz vima w terminalu, absolutnie nie zamapuj Escape. Ze względu na sposób obsługi klawiszy w vimie (i prawdopodobnie ogólnie w terminalach), zmiana przypisania go złamie wszystkie klucze, których nie zamierzałeś zmieniać. Aby zobaczyć, co mam na myśli, wykonaj następujące czynności.

  1. Otwórz vim bez plików startowych: vim -u NONE --noplugin -N.
  2. Wejdź do trybu wstawiania.
  3. Naciśnij klawisz Ctrl-v, a następnie dowolny z klawiszy funkcyjnych, na przykład <F2>.

Zwróć uwagę na wprowadzoną sekwencję. Najprawdopodobniej zaczyna się od ^[, która jest literalna Escape.

Teraz otwarte spróbuj wykonać następujące czynności:

  1. :inoremap <esc> NO ESCAPE FOR YOU
  2. Wejście w tryb wstawiania.
  3. Naciśnij dowolny przycisk funkcyjny, na przykład <F2>.

Jeśli poprzednia sekwencja pokazała znak ucieczki jako część klawisza <F2>, zobaczysz teraz nasz nowy ciąg wydrukowany na ekranie. W rzeczywistości, gdy masz już mapowanie, spróbuj się poruszać, używając klawiszy kursora. Prawdopodobnie zauważysz to samo dziwaczne zachowanie.

Podsumowując, nie zmieniaj ucieczki, prawie gwarantuję, że będziesz miał nieoczekiwane konsekwencje.

6

Oto nie-geeky sposób osiągnięcia tego, co chcesz: zgniataj kawałki papieru do rozmiaru kciuka i przyklej je do kluczy. W momencie, gdy twój palec spróbuje do nich dotrzeć, zamiast tego wpadniesz na papier. Będą dobrym przypomnieniem. Trzymaj je nagrane, dopóki nie wpadniesz na nie.

+2

Zakłada to, że używasz tylko vima, niektórzy z nas też chcą przełączać się między innymi aplikacjami. – ideasman42

3

Co miałeś było blisko:

inoremap <esc> <NOP> 
inoremap <Left> <NOP> 
inoremap <Right> <NOP> 
inoremap <Up> <NOP> 
inoremap <Down> <NOP> 
nnoremap <Left> <NOP> 
nnoremap <Right> <NOP> 
nnoremap <Up> <NOP> 
nnoremap <Down> <NOP> 

Linia ta została powodując kłopoty:

noremap <Esc> <NOP> 
+1

Dziękujemy! Jak widzę, jest to bardzo zbliżone do tego, czego szukałem. Klawisze strzałek nie działają (i jest to pożądana czynność), ale klawisz "Esc" nadal przełącza się z trybu wstawiania do trybu normalnego. I chcę usunąć to zachowanie. – bessarabov

Powiązane problemy