Linux vi-Pfeiltasten im Einfügemodus defekt

95

Meine Pfeiltasten funktionieren zu Hause im Einfügemodus nicht in vi, sondern fügen jeweils eine neue Zeile und einen Großbuchstaben wie 'A' ein. Gibt es eine Möglichkeit, das zu beheben?

Josh
quelle
3
Ich meine die Verteilung von Linux?
Miquel
Arbeiten sie außer Haus? :-)
Brian Agnew
4
Offensichtlich ist die Lösung Emacs. Offensichtlich.
Paul Nathan
38
@ Paul Nathan - Wenn die Lösung Emacs ist, dann möchte ich nicht wissen, was das Problem ist.
Chas. Owens

Antworten:

107

Ich nehme an, Sie verwenden vim, da dies als Linux gekennzeichnet ist. Versuchen:

:set nocompatible

(Möglicherweise möchten Sie Ihre .vimrc-Datei damit konfigurieren, indem Sie diesen Befehl hinzufügen. Erstellen Sie eine neue .vimrc-Datei, falls diese noch nicht in Ihrem Ausgangsverzeichnis vorhanden ist, echo $HOMEund überprüfen Sie den Pfad des Ausgangsverzeichnisses .)

Brian Agnew
quelle
7
Stellen Sie sicher, dass Sie vi mit dem Befehl starten vimund nicht vi. Die meisten erweiterten und nützlichen Funktionen von vimsind standardmäßig deaktiviert, es sei denn, Sie beginnen mit vim.
Punkte
1
@pts - nur auf kaputten Systemen. Das Starten von vim als vi auf allen meinen Boxen funktioniert einwandfrei. Es gibt jedoch einige von mir verwendete CentOS-Boxen, die das Verhalten demonstrieren, über das Sie sprechen.
Chas. Owens
Kann jemand diese Antwort so bearbeiten, dass sie enthält, wie sie in einem vimrc aussehen würde?
Stephan
1
@Stephan Add set nocompatibleauf einer eigenen Linie in der .vimrc
Matthew Wilcoxson
Unter Ubuntu habe ich dieses Problem gelöst, indem ich von diesem Moment an einfach vim (sudo apt install vim) installiert habe. Vi funktioniert gut mit den Pfeiltasten im Einfügemodus. Edit: Ich sehe jetzt, dass dies hier unten bereits von Han erwähnt wurde.
Pizzamonster
74

Ubuntu wird standardmäßig mit ausgeliefert vim-tiny, das nicht alle Schnickschnack hat, die vim hat.

Machen Sie schnell sudo apt-get install vim, um alle saftigen Funktionen zu erhalten, über die alle sprechen.

Han
quelle
1
Dies war genau das, was ich in Mint Linux brauchte. Durch die Installation von vim konnte ich immer noch "vi" verwenden und die gesamte Code-Hervorhebung war jetzt aktiviert. Was für ein fantastisches Stück Linux-Wissen :)
wired00
1
Dies funktionierte für meinen Raspberry Pi (Jessie Lite). Ich hatte dieses Problem, als ich die Shell darin sichern wollte, aber jetzt ist es vollständig behoben :-)
JakeD
35

:set term=builtin_ansi

habe es für mich behoben. Sie können dies entweder im Escape-Modus (Piep-Modus) in vim einfügen oder am Ende von ~ / .vimrc ohne das führende ":" hinzufügen.

Alexx Roche
quelle
: set term = xterm funktioniert möglicherweise auch (und ist leichter zu merken).
Alexx Roche
Zu Ihrer Information habe :set term=builtin_ansiich für mich gearbeitet. :set term=xtermnicht.
FractalSpace
Auf einer meiner Linux-Boxen verwende ich export TERM=xtermin der Kommandozeile, bevor ich vi :set term=xterm
Alexx Roche
Funktioniert perfekt! Danke dir!
Akhmedzianov Danilian
Dies funktioniert, um die Navigation mit den Pfeiltasten zu aktivieren, hat jedoch die gesamte Farbcodierung im Terminal vollständig zerstört.
Ken Ingram
16

vi unterstützt keine Pfeiltasten im Einfügemodus. Verwenden Sie vim. Obwohl Ihr vi möglicherweise nur ein Link zu vim ist, kann es so konfiguriert sein, dass es sich wie das "ursprüngliche" vi verhält und somit die Pfeiltasten deaktiviert. Rufen Sie einfach vim direkt auf.

Lothar
quelle
Obwohl dies keine Lösung ist, ist es die beste Erklärung für das Verhalten (imo), um den Unterschied zwischen viund deutlich zu machen vim. Aber auf meiner Box vimdruckt command not found: D
Daniel W.
@DanFromGermany Vielleicht hast du nur ein vi installiert und kein vim. Bitte versuchen Sie, vim über den Paketmanager Ihres Linux-Systems zu installieren, wenn Sie es verwenden möchten.
Lothar
:set term=ansihat für mich gearbeitet, danke Raz . Sie sagen, es "unterstützt nicht". Ich frage mich, haben Sie gesagt, dass vim-tinydas Ubuntu-Paket, das ich verwende, sich von Vanille unterscheidet, vioder würde das Einstellen von Begriffen auch darin funktionieren?
n611x007
8

Noch eine Variation: Dieses Problem trat für mich nach einigen .vimrc-Änderungen auf. Eine konzertierte Suche ergab schließlich, dass meine clevere Neuzuordnung von ESC im normalen Modus keine gute Idee war. Das Entfernen löste das Problem:

" this is NOT something you want in .vimrc:
" In normal mode, hitting Esc turns off search highlights:
nmap <ESC> :nohl<CR>  " Do NOT add this to .vimrc
Stallhund
quelle
Ich habe alles versucht, nachdem ich dieses Problem festgestellt hatte, und das war es, wonach ich gesucht habe, danke!
Dan Bartlett
Danke für das Update, ich habe überall gesucht. Irgendeine Idee, warum das Neuzuordnen von Escape Probleme verursacht?
Nicht-Foto
6

Das einzige, was für mich funktioniert hat, war ": set term = ansi"

Raz
quelle
1
Dies scheint auch bei mir mit einem Docker-Container funktioniert zu haben.
Ohlando
1
Dieser hat auch für mich funktioniert. Ich benutze cmd.exe in Windows und sshing in Ubuntu mit Vagrant
Codelogn
@ CodeCodeO-1-O-log-n Welche Seite haben Sie also viauf den Fenstern oder auf der Ubuntu-Seite verwendet? :)
n611x007
Unter Windows habe ich cmd.exe und dann vagrant ssh auf den Ubuntu-Server und dann vi auf den Server ausgeführt. Aber später habe ich angefangen, Putty zu verwenden und ich muss das nicht mehr tun und Putty funktioniert großartig für mich.
Codelogn
2

Ich hatte das gleiche Problem mit den Pfeiltasten, aber als ich diese Einstellung nocp oder nocompatible verwendet habe, funktionierte meine Rücktaste nicht richtig

Aus irgendeinem Grund sudo apt-get install vimhatte vi bei der Installation von vim mit keine Probleme mehr mit Pfeilen oder Rücktasten

Night5talker
quelle
1

Ich hatte gerade ein Problem mit den Pfeiltasten, nachdem ich auf git in .vim umgestellt hatte.

Ich habe dieses Repo installiert - https://github.com/sunaku/.vim

und nachdem ich eine Stunde lang herumgegraben hatte, stellte ich fest, dass das AutoClose-Plugin (das sowieso nicht gefiel) die Pfeiltasten brach.

Die Plugin-Dokumente schlagen vor, dass man set ttimeoutlen = 100 setzen sollte, aber das hat bei mir nicht funktioniert! (mit urxvt + screen oder urxvt und sogar xterm)

Also habe ich das Plugin am Ende entfernt.

Fehlerentwickler
quelle
0

Vielleicht möchten Sie auch 'noesckeys' ausprobieren


quelle
0

Ich hatte das gleiche Problem bei der Verwendung von vim in Windows 8.1 mit Cygwin.

Die Lösung für mich ist, führen Sie einfach den folgenden Befehl in Ihrem Cygwin-Terminal aus:

cp vimrc_example.vim ~/.vimrc
noufal
quelle
-1

Schreiben Sie in die Befehlszeile Folgendes:

EXINIT="set nocompatible"; export EXINIT
Soheil
quelle
1
Bitte fügen Sie eine (kurze) Beschreibung Ihrer Lösung hinzu
Raidri unterstützt Monica