Pfeiltasten hören spontan auf, in vim zu arbeiten

25

Ich habe kürzlich ein Upgrade von OS X 10.6 (glaube ich) auf 10.9 durchgeführt. Seitdem scheinen vimdie Pfeiltasten beim Bearbeiten "spontan" nicht mehr zu funktionieren.

Irgendwann "drückte" ich frustriert eine der Pfeiltasten und es wurde schließlich der Fehler "E388 konnte keine Definition finden" angezeigt. Bei allen anderen Gelegenheiten, die ich erlebt habe, fangen die Pfeile, die eine Weile gearbeitet haben, plötzlich an, mich anzustacheln !

Durch Beenden und erneutes Öffnen wird das Problem vorübergehend behoben . Aber ich würde es gerne verhindern !

Weiß jemand was das sein könnte? Und wie kann man das beheben?


Es sieht so aus, als ob meine Standardeinstellung vimrcwährend des Updates geändert wurde. Wenn mein Gedächtnis stimmt, war es vorher eine ziemlich große Datei. Jetzt enthält es nur noch Folgendes:

" 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

Ich habe noch keine Ahnung, was diese Optionen tun. Ich werde es untersuchen - aber hoffentlich weiß jemand hier schneller, als ich googeln und lesen kann ...

Svidgen
quelle
Ich habe auch gerade festgestellt, dass es hier ein Apple-zentriertes Forum gibt, für das diese Frage möglicherweise besser geeignet ist. Wenn dies also eher eine Bedingung von OS X ist als vim, könnte ein Mod dies für mich möglicherweise migrieren.
Svidgen
2
Erinnert mich an die Arbeit an einem "Prime" -Mainframe im College. Der Professor lehrte, dass Sie niemals die Pfeiltasten verwenden sollten vi. Verwenden Sie immer hjkl. Hier befinden sich die "Pfeiltasten" auf uralter Hardware.
Red Cricket
OK ... Aber die Pfeiltasten sollten funktionieren. Unabhängig davon, ob Ihr Professor meint, ich sollte sie verwenden. Und ich finde sie manchmal bequem. Freue mich also auf die Lösung.
Svidgen
1
Was passiert, wenn Sie das Schlüssel-Literal in einen Puffer einfügen? Wechseln Sie in den Einfügemodus und drücken Sie Strg + v und anschließend eine Pfeiltaste. Vim auf meinem Mac zeigt die Aufwärtspfeiltaste als ^[OA, Abwärts als ^[OB, Rechts als ^[OCund Links als an ^[OD. Überprüfen Sie, bevor und nachdem das Problem auftritt
Nathan Wallace
@ NathanWallace nicht sicher, wie ich Ihre Frage übersehen. Ich werde es versuchen, wenn ich das nächste Mal an meinem Mac bin.
Svidgen

Antworten:

24

In James Hodgkinsons Blog funktioniert der folgende Befehl für mich. Beachten Sie, dass der VIM-Bildschirm aktualisiert wird.

:!reset
ronnefeldt
quelle
Ich bin nicht sicher, wie ich diese Antwort übersehen habe, aber sie sieht sehr vielversprechend aus!
Svidgen
Tatsächlich ... Wenn Sie Strg + R drücken, wie im Artikel beschrieben, wird das Problem in voller Übereinstimmung mit den falschen Pfeiltastenzuordnungen reproduziert, die in meiner Antwort auf Nathan oben erwähnt wurden. Und der Reset-Befehl löst es in diesem Fall. Und ... ich kann das Problem auf keine andere Weise zuverlässig reproduzieren, daher ist dies definitiv die nützlichste Antwort!
Svidgen
11

Ich bin auch ein paar Mal auf dieses Problem gestoßen. Ich habe zufällig GNU screen auf einem anderen Computer ausgeführt, bei dem ich über SSH angemeldet war. Um das Problem zu beheben, habe ich meine (n) Bildschirm (e) ( Ctrl- a d) getrennt , mich vom Computer abgemeldet , mich wieder angemeldet und mich mit erneut angemeldet screen -x. Möglicherweise funktioniert dies, ohne dass Sie sich vom Computer abmelden müssen. Dazu müssen Sie lediglich den Bildschirm abnehmen und wieder anbringen. Ich kann mich aber nicht erinnern.

Tyson
quelle
Das Schließen und Neustarten meiner Bildschirmsitzung hat es für mich behoben.
Eno
1
Das war das Problem für mich. Irgendwie screengeriet ich in einen Funkzustand (über eine SSH-Verbindung). Schließe das Terminal, dann ssh und screen -rdmache den Trick. Vielen Dank!
Pierre D
@PierreD richtig, ich bin auch schon einige Male auf dieses Problem gestoßen - auch in einer screenSitzung hat Detach & Reattach das Problem gelöst, danke!
stdcerr
6

Im Pfad habe /usr/share/vim/ich die .vimrcDatei gefunden ... Dort habe ich die Zeile hinzugefügt

set term=ansi 

Es hat bei mir funktioniert. Jetzt funktionieren die Pfeiltasten im Vim-Editor ordnungsgemäß.

Anup Kumar
quelle
2
Dies hat es auch für mich behoben, da das neueste Windows 10 WSL / Ubuntu-Update es kaputt gemacht hat.
Grey Fox
3

Das hört sich sehr nach Ihrem Problem an. Der Artikel trägt den Titel: Cursortasten in Vim: Du machst mich verrückt! .

Auszug

Vim ist in vielen Situationen nützlich, insbesondere für schnelle Bearbeitungen (insbesondere als Root) und zum Bearbeiten von Dateien auf einem Remote-Server. Ein Ärger, den ich während meiner neun Monate mit einem Mac Book Pro hatte, ist, dass die Cursortasten in Vim sowohl im Einfüge- als auch im Befehlsmodus geklingelt haben, anstatt die Zeilen zu wechseln. Ein Upgrade auf Version 7 über MacPorts lieferte die gleichen Ergebnisse. Die Cursortasten haben funktioniert, nachdem ich TERM von rxvt auf VT220 umgestellt habe! Der Nachteil war, dass die Syntaxhervorhebung nicht mehr funktionierte.

Glücklicherweise wurde durch das Hinzufügen von VT220 zu meinen Google-Suchparametern in der Vim-Dokumentation ein Verweis auf die vt100-Cursortasten gefunden. Fügen Sie Ihrer .vimrc-Datei den folgenden Code hinzu, um das Problem zu beheben:

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

Im selben Artikel gibt es einen weiteren Vorschlag $TERM, linuxstattdessen OSX zu verwenden.

Auszug

Eine bessere Lösung besteht darin, den Standardwert für TERM in linux oder dtterm zu ändern, da der TERM-Wert auf dem Remote-Server abgerufen wird. In der heutigen Zeit würde ich wetten, dass die meisten Server diese beiden Terminaltypen unterstützen.

slm
quelle
Hmm ... ich bin jetzt noch verwirrter. Ich dachte, ich hätte globale / Standarddateien .vimrc. Wären diese während eines OS X-Updates verschoben oder entfernt worden?
Svidgen
@svidgen - Nein, ich glaube nicht, dass sich das geändert hätte, aber dieses Problem klang ziemlich ähnlich wie das Ihre, und die Lösung ist einfach genug, um sie auszuprobieren, also dachte ich, ich würde es mit Ihnen teilen. Übrigens $TERMhätte sich das an dir ändern können.
slm
Welpe, das ist definitiv die relevanteste Antwort hier. +1 dafür. Ich bin mir leider noch nicht sicher, ob es das Problem behebt, da ich es nicht konsistent reproduzieren kann.
Svidgen
Nachdem Sie dieses Update angewendet haben, ist das Problem erneut aufgetreten. Immer noch eine relevante Antwort, die +1 lässt. Bitte beachten Sie jedoch meinen Kommentar oben, wenn Sie eine zusätzliche Antwort liefern möchten.
Svidgen
0

Herzlichen Glückwunsch zum Update. Ich habe über das Wochenende mein eigenes Update gemacht und einige meiner seltsamen Tastaturprobleme behoben.

Hier sind ein paar Dinge, die ich tun musste:

  • Entfernen Sie die alte Logitech-Gaming-Software und führen Sie ein Upgrade durch. Zuvor hatte ich Probleme mit meinen eckigen und geschweiften Klammern. Spezielle Schlüssel senden häufig Esc- [Sequenzen im VIM-Kontext, sodass dies relevant sein kann.
  • Gehen Sie in die Systemeinstellungen: Sicherheit und Datenschutz: Datenschutz: Barrierefreiheit und aktivieren Sie einige Apps (synergy_server und Logitech Gaming Software). Vor dieser Änderung war es mir nicht möglich, meine anderen Computer mit Synergieeffekten zu steuern oder Makros mit meinem G11 zu verwenden. Ich bezweifle, dass dies eine direkte Verbindung für Sie ist, aber die Eingabehilfenoptionen sind neu und gelten möglicherweise für eine andere App von Ihnen.
Todd Pike
quelle
0

Wenn Sie in .sqlDateien arbeiten vim(Sie erwähnen es nicht), könnte dies Ihnen helfen. Ich habe mich neulich damit befasst.

Im Ordner ~/.vimrc

let g:omni_sql_no_default_maps = 1

Dieses spezielle Problem wird hier erörtert

Wenn dieses Problem bei .sqlDateien in nicht auftritt, vimentschuldige ich mich. Mein einziger Gedanke wäre, die Zuordnung innerhalb zu überprüfen, vimwenn das Problem auftritt.

:map Ctrl V → Wenn Sie nicht mehr in der Lage sind, Ihren Pfeil zu verwenden, führen Sie diesen Befehl aus und prüfen Sie, ob die Zuordnung verschwunden ist. Wenn dies der Fall ist, haben Sie hier die Möglichkeit, sich zu vertiefen.

Driz
quelle
0

Ich hatte dieses Problem in einer SSH-Sitzung und löste es, indem ich mich dann wieder ausloggte:

exit
ssh ...
duhaime
quelle
Vielen Dank fürs Abwägen. Die gewählte Antwort hat bei mir aber durchweg funktioniert. Hast du es versucht?
Svidgen
Ja, die akzeptierte Lösung funktionierte unter Ubuntu 18 nicht. Ich habe sogar vim deinstalliert und erneut installiert (in derselben ssh-Sitzung) und keine Würfel. Erst abmelden, dann wieder anmelden, wiederhergestellte Pfeilfunktionalität.
Duhaime
0

Ich hatte dieses Problem , wenn ich eine „Systemumgebungsvariable“ in Windows verwendet, Einstellung TERMzu xterm-256color. Das Problem verschwand (und ich vimkehrte zum Normalzustand zurück), als ich die Variable wieder löschte.

Birb
quelle