Klawisze strzałek spontanicznie przestają działać w vimie

25

Niedawno zaktualizowałem system OS X 10.6 (tak myślę) do 10.9. Od tego czasu wydaje się, że podczas edycji vimklawisze strzałek „spontanicznie” przestaną działać.

W pewnym momencie, z frustracji, „wycisnąłem” jeden ze strzałek i ostatecznie pojawił się błąd „E388 Nie można znaleźć definicji”. Za każdym razem, gdy tego doświadczyłem, strzały, które pracowały przez jakiś czas, nagle zaczęły na mnie szaleć !

Wyjście i ponowne otwarcie rozwiązuje problem tymczasowo . Ale chciałbym temu zapobiec !

Czy ktoś wie, co to może być? I jak to naprawić?


Wygląda na to, że moje ustawienia domyślne vimrczostały zmodyfikowane podczas aktualizacji. Jeśli moja pamięć jest poprawna, poprzednio był to dość duży plik. Teraz zawiera tylko to:

" Configuration file for vim
set modelines=0         " CVE-2007-2438

" Normally we use vim-extensions. If you want true vi-compatibility
" remove change the following statements
set nocompatible        " Use Vim defaults instead of 100% vi compatibility
set backspace=2         " more powerful backspacing

" Don't write backup file if vim is being called by "crontab -e"
au BufWrite /private/tmp/crontab.* set nowritebackup
" Don't write backup file if vim is being called by "chpass"
au BufWrite /private/etc/pw.* set nowritebackup

Nie mam pojęcia, co robią te opcje. Zajmę się tym - ale mam nadzieję, że ktoś tu wie szybciej niż Google i czyta ...

svidgen
źródło
Właśnie zdałem sobie sprawę, że istnieje tutaj forum zorientowane na Apple, na które lepiej byłoby odpowiedzieć na to pytanie. Tak więc, jeśli jest to bardziej prawdopodobny warunek OS X vim, być może mod może migrować to dla mnie.
svidgen
2
Przypomina mi o pracy nad komputerem typu „Prime” na studiach. Profesor nauczał, że nigdy nie należy używać klawiszy strzałek w vi. Zawsze używaj hjkl. Tam właśnie znajdują się klawisze „strzałek” na starożytnym sprzęcie.
Red Cricket
OK ... Ale klawisze strzałek powinny działać. Niezależnie od tego, czy twój profesor uważa, że ​​powinienem ich użyć. Czasami uważam je za wygodne. Tak więc czekam na rozwiązanie.
svidgen
1
co się stanie, gdy wstawisz literał klucza do bufora? przejdź do trybu wstawiania i naciśnij Ctrl + v, a następnie klawisz strzałki. Vim na moim komputerze Mac pokazuje klawisz strzałki w górę jako ^[OA, w dół jako ^[OB, w prawo jako ^[OCi w lewo jako ^[OD. sprawdź przed i po wystąpieniu problemu
Nathan Wallace
@NathanWallace nie jestem pewien, jak przeoczyłem twoje pytanie. Spróbuję tego, gdy będę na komputerze Mac.
svidgen

Odpowiedzi:

24

Znalezione w blogu Jamesa Hodgkinson za następujące polecenie działa na mnie. Zauważ, że odświeży ekran vima.

:!reset
ronnefeldt
źródło
Nie jestem pewien, jak przeoczyłem tę odpowiedź, ale wygląda bardzo obiecująco!
svidgen,
W rzeczywistości ... Naciśnięcie Ctrl + R zgodnie z opisem w tym artykule odtwarza problem w pełnej zgodności ze złymi mapowaniami klawiszy strzałek zanotowanymi w mojej odpowiedzi na Nathana powyżej. Polecenie reset rozwiązuje to w tym przypadku. I .. Nie mogę w wiarygodny sposób odtworzyć problemu w żaden inny sposób, więc jest to zdecydowanie najbardziej użyteczna odpowiedź!
svidgen
11

Kilka razy spotkałem się z tym problemem. Zdarzyło mi się uruchamiać ekran GNU na innym komputerze, na którym logowałem się przez SSH. Aby rozwiązać problem, odłączyłem ekran (y) ( Ctrl- a d), wylogowałem się z komputera, zalogowałem ponownie i ponownie przyłączyłem screen -x. Może działać bez wylogowywania się z komputera, po prostu odłączając i ponownie instalując ekran. Nie pamiętam jednak.

Tyson
źródło
Zamknięcie i ponowne uruchomienie sesji ekranu naprawiło to dla mnie.
Eno,
1
to był dla mnie problem. Jakoś screenosiągnął stan funk (przez połączenie ssh). Zamknięcie tego terminalu, potem ssh ponownie i screen -rdzałatwiło sprawę. Dzięki!
Pierre D
@PierreD poprawnie, kilka razy spotkałem się z tym problemem - także podczas screensesji Detach & Reattach rozwiązało problem, dziękuję!
stdcerr
6

W ścieżce /usr/share/vim/znalazłem .vimrcplik ... Tam dodałem linię

set term=ansi 

To zadziałało dla mnie. Teraz klawisze strzałek działają poprawnie w edytorze Vima.

Anup Kumar
źródło
2
Naprawiłem to również dla mnie, ponieważ najnowsza aktualizacja Windows 10 WSL / Ubuntu go zepsuła.
Gray Fox
3

To brzmi bardzo podobnie do twojego problemu. Artykuł zatytułowany: Cursor Keys in Vim: You Mac'ing Me Crazy! .

fragment

Vim jest przydatny w wielu sytuacjach, szczególnie do szybkich edycji (szczególnie jako root) i edycji plików na zdalnym serwerze. Jedną z irytacji, jakie miałem podczas moich dziewięciu miesięcy z komputerem Mac Book Pro, są klawisze kursora w Vimie, dzwoniące dzwonkiem w trybie wstawiania lub poleceń zamiast zmiany linii. Aktualizacja do wersji 7 za pośrednictwem MacPorts dała takie same wyniki. Klawisze kursora działały po zmianie mojego TERM na VT220 z rxvt! Minusem było podświetlanie składni, które przestało działać.

Na szczęście dodanie VT220 do moich parametrów wyszukiwania Google spowodowało pojawienie się odniesienia do klawiszy kursora vt100 w dokumentacji Vima. Dodaj następujący kod do pliku .vimrc, aby rozwiązać problem:

    :set notimeout          " don't timeout on mappings
    :set ttimeout           " do timeout on terminal key codes
    :set timeoutlen=100     " timeout after 100 msec

W tym samym artykule jest jeszcze jedna sugestia ustawiania $TERMTO linuxzamiast na OSX.

fragment

Lepszym rozwiązaniem jest zmiana domyślnej wartości TERM na Linux lub dtterm, ponieważ wartość TERM będzie pobierana na zdalnym serwerze. W dzisiejszych czasach założę się, że większość serwerów obsługuje oba te typy terminali.

slm
źródło
Hmm ... Jestem teraz jeszcze bardziej zdezorientowany. Myślałem, że mam .vimrcpliki globalne / domyślne . Czy zostałyby one przeniesione lub usunięte podczas aktualizacji OS X?
svidgen
@svidgen - Nie, nie sądzę, żeby to się zmieniło, ale ten problem wydawał się być podobny do twojego, a poprawka jest łatwa do wypróbowania, więc pomyślałem, że podzielę się nią z tobą. Nawiasem mówiąc, $TERMmogło to cię zmienić.
slm
Jest to zdecydowanie najbardziej odpowiednia odpowiedź tutaj. +1 za to. Nie jestem pewien, czy to rozwiązuje, niestety, ponieważ nie mogę konsekwentnie odtworzyć problemu.
svidgen
Po zastosowaniu tej poprawki problem wystąpił ponownie. Nadal trafna odpowiedź, pozostawiając +1. Ale proszę zobaczyć mój komentarz powyżej, jeśli chcesz udzielić dodatkowej odpowiedzi.
svidgen
0

Gratulujemy aktualizacji. Zrobiłem własną aktualizację w weekend i miałem do czynienia z niektórymi z moich dziwnych problemów z klawiaturą.

Oto kilka rzeczy, które musiałem:

  • Usuń stare oprogramowanie do gier Logitech i dokonaj aktualizacji. Przedtem miałem problemy z używaniem moich kwadratowych i kręconych nawiasów klamrowych. Specjalne klucze często wysyłają sekwencje specjalne w kontekście VIM, więc może to mieć znaczenie.
  • Przejdź do Prefektów systemu: Bezpieczeństwo i prywatność: Prywatność: Dostępność i włącz kilka aplikacji (synergy_server i oprogramowanie do gier Logitech). Przed tą zmianą nie byłem w stanie kontrolować moich innych komputerów z synergią ani używać makr z moim G11. Wątpię, czy jest to bezpośrednie połączenie dla Ciebie, ale opcje ułatwień dostępu są nowe i mogą mieć zastosowanie do innych aplikacji.
Todd Pike
źródło
0

Jeśli pracujesz w .sqlplikach vim(nie wspominasz), to może ci pomóc. Właśnie poradziłem sobie z tym pewnego dnia.

W pliku ~/.vimrc

let g:omni_sql_no_default_maps = 1

ten konkretny problem omówiono tutaj

Jeśli nie masz tego problemu z .sqlplikami vim, przepraszam, moja jedyna myśl polegałaby na zweryfikowaniu mapowania wewnątrz, vimgdy wystąpi problem.

:map Ctrl V → kiedy stracisz umiejętność posługiwania się strzałą, wykonaj to polecenie i sprawdź, czy mapowanie zniknęło. jeśli tak, daje ci to miejsce do rozpoczęcia kopania.

driz
źródło
0

Miałem ten problem podczas sesji SSH i rozwiązałem go poprzez wylogowanie, a następnie ponowne zalogowanie:

exit
ssh ...
duhaime
źródło
Dziękuję za rozważenie. Wybrana odpowiedź konsekwentnie działa jednak dla mnie. Próbowałeś tego?
svidgen,
Tak, zaakceptowane rozwiązanie nie działało na Ubuntu 18. Nawet odinstalowałem i ponownie zainstalowałem vim (w tej samej sesji ssh) i nie mam kości. Tylko wylogowanie, a następnie ponowne zalogowanie przywróconej funkcjonalności strzałki.
duhaime,
0

Miałem ten problem, gdy użyłem „systemowej zmiennej środowiskowej” w systemie Windows, ustawiając TERMna xterm-256color. Problem zniknął (i vimwróciłem do normy), gdy ponownie usunąłem zmienną.

Brzoza
źródło