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

20

Mam problem z Esckluczem, gdy chcę wrócić do trybu interaktywnego z trybu wstawiania. Czy istnieje inny klucz używany do zwolnienia trybu wstawiania.

Sandra Ross
źródło
13
Kontrola prasy[
Thomas Dickey,
3
Całkiem kilka sugestii na vi.stackexchange.com/q/300/9708 .
Guy
2
nowy Macbook Pro? <grin>
Rui F Ribeiro
2
nie, thinkpad x1 carbon
Sandra Ross,

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

Konrad Rudolph
źródło
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.

DopeGhoti
źródło
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.

grochmal
źródło
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.

vatsug
źródło
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.

Raj
źródło
3
Ctrl+F2może wysłać ucieczkę, ale wyśle ​​także inne rzeczy.
Kusalananda