Jak wysłać sygnał ESC do vima, gdy mój klawisz esc nie działa?


Odpowiedzi:


7

Niezależnie od istniejących rozwiązań, konwencjonalnym rozwiązaniem w Vimie jest ponowne mapowanie kluczy w twojej .vimrckonfiguracji. W rzeczywistości wielu użytkowników Vima ma łatwiej dostępny klucz przypisany do mapowania Esc. Popularne opcje to Ctrl+ Enter, lub jjitd.

Aby to włączyć, po prostu włóż do swojego programu coś podobnego .vimrci załaduj ponownie / uruchom ponownie Vima:

" Shift-Enter
inoremap <S-CR> <Esc>
" Double-j
inoremap jj <Esc>

Więcej informacji i alternatywy


1
Eyup, to jest sposób Vima. Innym popularnym sposobem promowanym przez Learn Vim the Hard Way (książka) jestinoremap jk <Esc>
grochmal

To dobre rozwiązanie, ale na czym polega problem z używaniem tylko Ctrl + Enter + j?
Sandra Ross,

@SandraRoss Możesz naprawdę użyć dowolnej kombinacji klawiszy, którą sobie wyobrażasz (choć strzeż się, że niektóre, np. Ctrl-Enter, nie działają na macOS). To powiedziawszy, Ctrl + Enter + j wydaje mi się trudniejszy do pisania, a ja szczerze mówiąc nie wiem, czy możesz nawet skonfigurować trzykluczowe kombinacje z dwoma niemodyfikatorami (Enter, j) w Vimie.
Konrad Rudolph,

Ok, rozumiem. W rzeczywistości Ctrl + Enter + jj nie działa dla mnie, ponieważ w rzeczywistości używam macos X. Przynajmniej mógłbyś mi powiedzieć, co mam wpisać tylko Ctrl + j.
Sandra Ross,

@SandraRoss Do tego inoremap <C-j> <Esc>powinno działać. :-)
Konrad Rudolph,

32

Ctrl- [wysyła ten sam znak do terminala co Escklucz fizyczny . Ten drugi jest ogólnie skrótem do pierwszego.


3
Kiedyś miałem prawdziwy terminal vt220, a jego klawiatura nie ma Escapeklawisza. Naciśnięcie Ctrl+[było jedynym sposobem na wygenerowanie Escape.
Kusalananda

11

Jeśli chcesz mieć możliwość korzystania z jednego klucza, jako czyste rozwiązanie * nix (bez mapowań Vima) możesz zdefiniować inny klucz jako Esc. Podobnie jak użytkownicy Emacsa mapują CapsLockna Ctrlniektórych użytkowników Vima (w tym mnie) CapsLockna Esc. Działa to dla każdego * nix używającego X11.

Użyj xev -event keyboard(a następnie naciśnij CapsLock), aby uzyskać kod CapsLockklucza (dla mnie jest to kod 66). Następnie możesz użyć xmodmapdo zmiany przypisania klucza:

xmodmap -e 'remove Lock = Caps_Lock' -e 'keycode 66 = Escape'

Aby uzyskać to przy logowaniu, możesz dodać xmodmapwyrażenia ~/.Xmodmapw następujący sposób:

remove Lock = Caps_Lock
keycode 66 = Escape

Chociaż w drugiej części YMMV, ponieważ nie wszystkie menedżery wyświetlania działają ~/.Xmodmap. Konieczne może być dodanie xmodmap .Xmodmapdo .xinitrcniektórych z nich.


Wiem dokładnie, co masz na myśli. Widziałem to wcześniej w tym tygodniu
Sandra Ross,

Zrobiłbym to, ale używam CapsLock jako mojego klawisza Compose (:
DopeGhoti

6

Możesz spróbować Ctrl-C, który działa dla mnie i moim zdaniem jest łatwiejszy niż ESC. Nie jestem jednak pewien, czy jest domyślnie włączony.


CTRL-C to ASCII 0x03, wysyła SIGINT do powłoki - to nie to samo co ESC.
kot

@cat To działa w zasadzie tak samo w vimie. Zawsze używam Ctrl-C zamiast Esc
Erik W

1
@cat: Dostajesz go za darmo, ponieważ vim ma ten moduł obsługi. Sam nie musisz nic robić. Ta odpowiedź działa natychmiast po wyjęciu z pudełka; Właśnie tego spróbowałem. Czy działa ogólnie w przypadku dowolnej aplikacji? Nie, ale nie o to poproszono.
Wyścigi lekkości z Monicą

2
@cat: Naprawdę? Tytuł brzmi „Jak wysłać sygnał ESC do vima, gdy mój klawisz esc nie działa?” , jedynym znacznikiem jest vim , a problem opisany w pytaniu dotyczy ucieczki z trybu wstawiania Vima. Oto podsumowująca część pytania: „Czy istnieje inny klucz używany do zwolnienia trybu wstawiania”. Jeśli nie jest to specyficzne dla Vima i jego trybu wstawiania, to nie wiem, co to jest!
Wyścigi lekkości z Moniką

1
@LightnessRacesinOrbit Cóż, kiedy początkowo zobaczyłem tytuł, był to „Kolejny klucz użyty do Esc” i pytanie wcale nie wyglądało tak specyficznie vim. Przepraszam! ¯_ (ツ) _ / ¯
cat

-3

Ctrl + F2

Jest domyślnie włączony. Nie trzeba konfigurować żadnych ustawień.

Przejdziesz do trybu normalnego, w którym możesz to zrobić :q! or :wq.


3
Ctrl+F2może wysłać ucieczkę, ale wyśle ​​także inne rzeczy.
Kusalananda
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.