Vim utknął w trybie wstawiania

50

Używam Vima od kilku miesięcy za pośrednictwem mojego hosta (umożliwiają dostęp do szpachli). Nagle escapeklucz przestał reagować. Nie mogę istnieć insertu ani żadnego innego trybu po prostu naciskając klawisz Escape. Muszę trafić, F1co wywołuje pomoc w vimie i powoduje przejście do trybu poleceń.

Jestem pewien, że mój klawisz Escape na klawiaturze działa dobrze, ponieważ wszystkie skróty systemu Windows, które używają klawisza Escape, działają normalnie.

Wiem, że to niedorzeczne pytanie i jestem pewien, że istnieje wiele innych kwestii do rozwiązania. Naprawdę potrzebuję solidnej wskazówki, od czego zacząć.

Rzeczy, które mogą pomóc:

  1. Używam vima przez kit
  2. Loguję się przy użyciu jailshell
  3. Nie jestem rootem
Levi Hackwith
źródło
jakie są twoje ustawienia terminala? tzn. do czego dokładnie ustawiona jest zmienna środowiskowa TERM (w zdalnej powłoce)?
quack quixote
Wartość
Czy Ctrl-[działa Co otrzymasz, jeśli naciśniesz, Ctrl-va następnie uciekniesz? Powinien być pokazany jako ^[.
Dennis Williamson,
Ctrl- [działał. Kołysz się! To oszczędza mi dużo frustracji. Czy jest jakaś szansa, aby wyjaśnić, dlaczego escjuż nie działa? Prześlij również swój komentarz jako odpowiedź, aby mógł go zaakceptować.
Levi Hackwith
Moja pierwsza myśl przy czytaniu: „Och, złamał swój przycisk„ Zabierz mnie stąd ”
Daniel,

Odpowiedzi:

16

Spróbuj użyć Ctrl-[zamiast Esc.

Jaki jest wynik:

python -c "print ord(raw_input('char '))"

kiedy naciskasz Esci Enter? Powinien to być „27”. Co jest wynikiem naciśnięcie Ctrl-Vpotem Esc?

Czy sprawdziłeś wszystkie ustawienia w PuTTY, aby sprawdzić, czy są uzasadnione?

Czy używasz Bash na zdalnym systemie? Spójrz na wynik

bind -p | grep -i '\\e' | less

i zobacz, czy widzisz coś niezwykłego. Czy masz plik o nazwie ~/.inputrc? Sprawdź jego zawartość, aby zobaczyć, czy coś jest nietypowe.

Spójrz na swoje ~/.vimrci sprawdź, czy też wszystko jest w porządku.

Dennis Williamson
źródło
Ctrl-c powinien również zakończyć tryb wstawiania („[” jest czasem nieco trudny do zdobycia na niektórych klawiaturach)
akira
Uruchomiłem skrypt Pythona i wrócił jako pusty ciąg. Jak to naprawić? Używam szpachli.
Keith
@Keith: Czy wypróbowałeś którąś z innych sugestii diagnostycznych?
Dennis Williamson,
ctrl + [pracował dla mnie z jakiegokolwiek powodu, nie mam pojęcia, co zrobiłem, aby zablokować vima.
Derek Adair,
139

Przez pomyłkę nacisnąłem Ctrl+ si utknąłem w trybie wstawiania. Aby się z niego wydostać, użyj Ctrl+ q.

Bhaskar
źródło
6
To nie jest tryb wstawiania XOFF. Możesz wyłączyć programową kontrolę przepływu, wykonując stty -ixon(dodaj ją do swojego ~/.bashrc). Wtedy to naciśnięcie klawisza będzie możliwe, aby powiązać go z czymś innym. Domyślnie w Bash jest on związany forward-search-history(odwrotnie niż Ctrl-r). Ctrl-q (Bash quoted-insert) będzie również dostępny.
Dennis Williamson
@DennisWilliamson Czy nie .bash_profilebyłoby lepszego miejsca? Nie trzeba go wyłączać w nieinteraktywnej powłoce, prawda?
Piotr Dobrogost
1
@PiotrDobrogost: „Po uruchomieniu interaktywnej powłoki, która nie jest powłoką logowania, Bash odczytuje i wykonuje polecenia z ~ / .bashrc, jeśli ten plik istnieje.” .bash_profilejest wykonywany tylko wtedy, gdy Bash jest powłoką logowania. „Więc zazwyczaj ~ / .bash_profile zawiera wiersz if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
Dennis Williamson,
2
dzięki! To jest to co zrobiłem. Cieszę się, że inni ludzie zwykle tak oszczędzają, bez względu na program. :-)
NullVoxPopuli
2
Uratował mnie dwa razy.
Elazar
4

Być może używasz trybu wstawiania .

'insertmode' 'im' 'noinsertmode' 'noim'
boolean (domyślnie wyłączone)
Sprawia, że ​​Vim działa w taki sposób, że tryb wstawiania jest trybem domyślnym. Przydatne, jeśli chcesz używać Vima jako edytora bez modeli. Używane dla | evim |.
[...]
- Służy CTRL-Odo wykonywania jednego polecenia w trybie normalnym | i_CTRL-O |). Gdy jest to odwzorowanie, jest wykonywane tak, jakby „insertmode” był wyłączony. Tryb normalny pozostaje aktywny do momentu zakończenia mapowania. - Użyj, CTRL-Laby wykonać kilka poleceń w trybie normalnym, a następnie użyj, Escaby wrócić do trybu wstawiania. Zauważ, że CTRL-Lprzesuwa kursor w lewo, podobnie jak wtedy, gdy nie ustawiono „insertmode”. | i_CTRL-L |

Sugeruję edycję, ~/.vimrcaby dodać następujący wiersz:

set noinsertmode         "disable insert mode
SandRock
źródło
1
W moim przypadku utknął w trybie wstawiania, ponieważ przypadkowo użyłem `-y 'w wierszu poleceń Jak powiedziano w instrukcji: -y Uruchom Vima w trybie łatwym, podobnie jak plik wykonywalny został nazwany„ evim ”lub„ eview ”. Sprawia, że ​​Vim zachowuje się jak edytor „kliknij i pisz”. Aby wyjść z tego „trybu łatwości”, wystarczy użyć <kbd> CTRL </kbd> + <kbd> l </kbd> (małe litery L), jak powiedział + SandRock
ton
0

Miałem ten problem, ale zdałem sobie sprawę, że to od przypadkowej zmiany trybu wprowadzania SCIM na „Inne - RAW CODE”. Zmieniłem go z powrotem na angielski / klawiaturę i nie miałem już żadnych problemów.

vim_user
źródło