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 ...


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

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.


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.


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.


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.

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.


0

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

exit
ssh ...

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ą.

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.