Frage Durch das Drücken von Pfeiltasten werden Zeichen im vi-Editor hinzugefügt


Als ich versuchte, im Einfügemodus die Pfeiltasten zu benutzen, vi Editor werden folgende Zeichen in den Editor eingefügt:

  • zum  Ich bekomme B,
  • zum  Ich bekomme ein,
  • zum  Ich bekomme D,
  • zum  Ich bekomme C.

Bitte helfen Sie mir, dieses Problem zu lösen.


143
2017-10-05 05:04


Ursprung


Ich hatte viel Spaß beim Lesen des Titels;) Ich bin sicher, dass es eine XKCD für das gruselige Gefühl gibt, das (für Anfänger) kommt, wenn die Pfeiltaste Buchstaben druckt. - vvy


Antworten:


Wenn Sie noch kein a .vimrc Datei in Ihrem Home-Verzeichnis, erstellen Sie eine mit diesem:

vim ~/.vimrc

Fügen Sie diese Zeile am Anfang der Datei hinzu:

set nocompatible

Speichern Sie die Datei und dies sollte das Problem für Sie beheben. :)


177
2017-10-05 07:23



Ich musste eine .exrc-Datei für vi erstellen, aber nocompatible funktionierte großartig. - tgun926
Es gibt einen Trick, wenn Sie verwenden vi Anstatt von vim, müssen Sie die gleiche Konfiguration aber in der tun ~/.exrc Datei. - tzi
Hat funktioniert. Aber warum ist diese Korrektur erforderlich? Warum funktioniert es standardmäßig nicht mit Pfeilen? - Mohit
Standardmäßig ist vi / vim so programmiert, dass die Pfeiltasten durch die Tasten h, j, k, l ersetzt werden. Dies geschieht, damit Sie nicht aus dem Haupttastenbereich der Tastatur wechseln müssen. - Gaurav Manchanda
nächstes Problem ist Backspace, Lösung: askubuntu.com/questions/296385/ ... - daVe


Installieren Sie vim -> Das wird das Problem beheben.

sudo apt-get install vim

Es gibt viele gute vim / vi Tutorials auf Youtube oder im Web. Für dein Problem, siehe hier

Dann weiter zu Öffnen Sie die Dateien wie gewohnt:

vi desired-file

47
2017-11-21 08:03



funktionierte für mich - obwohl ich nicht sicher bin, warum dies anders ist als der vim, den ich zuvor gestartet habe - Amos Folarin
Dies sollte die akzeptierte Antwort sein (scheint aber niemand anzunehmen). Es ist der einfachste / sauberste Weg, um vim vollständig zu einer Computerkonsole "modernisiert" zu bekommen (anstelle von tty / ANSI-Ära-Terminals). - Lockszmith
Ja, ich stimme dir zu, Lockzsmith, das sollte die akzeptierte Antwort sein - niccolo m.
Das hat für mich funktioniert. Ich bin überrascht, dass Raspian kommt mit der Version von vi / vim, dass es tut ... obwohl alle Tutorials dafür sagen, dass Sie Nano verwenden, die es schwer zu argumentieren, dass Vim ist wirklich besser als es ist. Wahrscheinlich ist der einzige Grund, warum ich vim anstelle von nano benutze, dass vim immer auf jeder Maschine ist und es scheint wie eine 50/50 Chance, ob nano ist. - ArtOfWarfare


Mit vi, wenn Sie auf klicken ich Sie aktivieren den Befehl zu Einfügen Text.
Mit diesem Befehl können Sie Text in Ihre Datei einfügen.
Und richtig, beim Klicken:

  • auf  es wird ein "A" einfügen,
  • auf  es wird ein "B" einfügen,
  • ...

Bis Sie deaktivieren diesen Befehl.
Einen Befehl in deaktivieren vi : Klicken Sie einfach auf Esc
Und dann werden Sie wieder normale Verwendung Ihrer Pfeiltasten bekommen:

  •  hinaufgehen,
  •  nach unten gehen,
  • ...

Zu Ihrer Information, hier sind einige vi Befehle:
Davon Quelle.

:xRückkehr  Beenden Sie viSchreiben einer modifizierten Datei in eine Datei, die im ursprünglichen Aufruf benannt wurde
:wqRückkehr  Beenden Sie viSchreiben einer modifizierten Datei in eine Datei, die im ursprünglichen Aufruf benannt wurde
:qRückkehr  beenden (oder beenden) vi
:q!Rückkehr  Beenden Sie vi obwohl die letzten Änderungen für diesen vi-Aufruf nicht gespeichert wurden

  Bewegung Cursor eine Zeile nach unten
  Bewegung Cursor eine Zeile nach oben
  Bewegung Cursor hat ein Zeichen verlassen
  Bewegung Cursor rechts ein Zeichen

u  rückgängig machen was auch immer du gerade getan hast; Ein einfacher Schalter
.  wiederholen was auch immer du gerade getan hast

i  einfügen Text vor dem Cursor, bis Esc schlagen
I  einfügen Text am Anfang der aktuellen Zeile, bis Esc schlagen
a  anhängen Text nach dem Cursor, bis Esc schlagen
A  anhängen Text bis Ende der aktuellen Zeile, bis Esc schlagen
o  öffnen und legen Sie den Text in eine neue Zeile unterhalb der aktuellen Zeile, bis Esc schlagen
O  öffnen und legen Sie den Text in eine neue Zeile oberhalb der aktuellen Zeile, bis Esc schlagen

r  ersetzen einzelnes Zeichen unter dem Cursor (Nr Esc erforderlich)
cw  Veränderung das aktuelle Wort mit neuem Text, beginnend mit dem Zeichen unter dem Cursor, bis Esc schlagen
x  löschen einzelnes Zeichen unter dem Cursor
Nx  löschen N Zeichen, beginnend mit dem Zeichen unter dem Cursor
dw  löschen das einzelne Wort beginnt mit dem Zeichen unter dem Cursor
C  Veränderung (Ersetzen) die Zeichen in der aktuellen Zeile bis Esc schlagen
D  löschen der Rest der Zeile, beginnend mit der aktuellen Cursorposition

dd  löschen gesamte aktuelle Zeile
Ndd  löschen N Zeilen, beginnend mit der aktuellen Zeile; z.B. löscht 5dd 5 Zeilen
yy  Kopieren (Ziehe, schneide) die aktuelle Zeile in den Puffer
Nyy  Kopieren (zieh, schneide) die nächsten N Zeilen, einschließlich der aktuellen Zeile, in den Puffer
p  Einfügendie Zeile (n) im Puffer in den Text nach der aktuellen Zeile

0 (Null) Bewegung Cursor zum Start der aktuellen Zeile (die mit dem Cursor)
$  Bewegung Cursor zum Ende der aktuellen Zeile
w  Bewegung Cursor zum Anfang des nächsten Wortes
b  Bewegung Cursor zurück zum Anfang des vorhergehenden Wortes
:0Rückkehr oder 1G  Bewegung Cursor zur ersten Zeile der Datei
:nRückkehr oder nG  Bewegung Cursor zu Zeile n
:$Rückkehr oder G  Bewegung Cursor zur letzten Zeile in Datei

/string  Suche Weiterleiten nach dem Auftreten einer Zeichenfolge im Text
?string  Suche Rückwärts für das Auftreten einer Zeichenfolge im Text
n  Bewegung bis zum nächsten Vorkommen des Suchstrings
N  Bewegung bis zum nächsten Auftreten des Suchstrings in entgegengesetzter Richtung


26
2017-10-05 06:52



Die Pfeil-nach-unten-Taste, die "B" einfügt, ist kein erwartetes Verhalten. Die Pfeiltasten sollten Cursor unabhängig vom Einfügemodus nach oben / unten / links und rechts bewegen. - James Wong
@JamesWong Eigentlich ist es ist erwartetes Verhalten, so wurde Vi ursprünglich programmiert. VIM, (inoffiziell) der Nachfolger von Vi, ist standardmäßig im Vi-kompatiblen Modus, der dieses Verhalten für die Pfeiltasten beinhaltet. Daher ist das Wort "sollte" hier nur subjektiv, da VIM tatsächlich das tut, wozu es absichtlich programmiert wurde. - villapx
@villapx - Nein, es ist kein erwartetes Verhalten. Erwartetes Verhalten wird durch das definiert, was Ihr typischer Benutzer erwartet. Die typische Person, die vi / vim benutzt, benutzt sie, weil sie auf einem Server installiert ist, den sie schnell konfigurieren müssen, und sie werden nicht genug tun, um etwas anderes zu installieren. Nur wenige entscheiden sich dafür, vim zu verwenden, wenn sie eine Option erhalten, und weniger kennen tatsächlich alle diese Merkmale oder Macken. Der typische Benutzer erwartet, dass Pfeile den Cursor bewegen - das ist das erwartete Verhalten. Alles andere ist unerwartetes Verhalten und sollte als ein Fehler für das Unerwartete aufgefasst werden. - ArtOfWarfare
@ArtOfWarfare Sie können "erwartet" definieren, wie Sie möchten. Ich definiere es als was vom Autor des Codes erwartet wird, da sie im VIM-Handbuch ziemlich klar waren, wie sich das verhalten soll ... von :help compatible: "Standardmäßig ist diese Option aktiviert und die Vi-Standardeinstellungen werden für die Optionen verwendet. Diese Standardeinstellung wurde für diejenigen Personen gewählt, die Vim genau wie Vi verwenden möchten und nicht einmal von der 'kompatiblen' Option wissen (wollen) . " - villapx
@ArtOfWarfare Im Grunde hat der VIM-Autor beim Schreiben dieses Teils des Codes eindeutig eine bestimmte Zielgruppe berücksichtigt, und nur weil diese Zielgruppe sich von der anderen unterscheidet Ihre Publikum wäre, bedeutet nicht, dass es ein Fehler ist. Sie können es als einen Fehler ablegen, wenn Sie es wünschen, aber seien Sie bereit, von VIM-Fundamentalisten beschimpft zu werden (und wirklich jedem, der das 'Handbuch' respektiert, a la RTFM-Fans). - villapx


Um das Drucken von Buchstaben beim Drücken von Pfeilen im Bearbeitungsmodus zu deaktivieren, können Sie Folgendes tun

vi $HOME/.exrc 

(Datei erstellen, wenn sie nicht existiert) und dann Zeile hinzufügen set nocompatible dazu und sparen.


16
2017-08-08 12:46



Dies sollte die akzeptierte Antwort sein. Vielen Dank! - eis
Ich habe das in .vimrc eingegeben. Warum legst du es in .exrc? - pauljohn32
Vim Quellen beide - siehe Ausgabe von :version für Ladeauftrag (auch :h .exrc oder :h init). Ich nehme an, jemand könnte eine Einstellung wünschen, die sowohl in vi als auch in vim angewendet werden kann, oder könnte reine Machtgewohnheit sein. - William Robertson


Es gibt drei Modi im Editor:

  • Befehlsmodus
  • Eingabemodus
  • Standardmodus.

Wenn Sie eine Datei öffnen, befinden Sie sich im Standardmodus. Jetzt, wenn Sie zu einer bestimmten Position in Ihrem Text gehen möchten, verwenden Sie einfach die Pfeiltasten oder verwenden Sie h, j, k, l Schlüssel. Beachten Sie, dass dies nur funktioniert, wenn Sie nicht gedrückt haben ich (oder einen anderen Eingabemodus wie z. B. ein, EIN, ich).

Der Grund für "B" könnte sein, dass die Pfeiltasten im Eingabemodus nicht als Pfeiltasten funktionieren, drücken Sie einfach Esc um jederzeit in den Standardmodus zu wechseln. Um in den Eingabemodus zu wechseln, drücken Sie ich oder ein, und navigieren Sie einfach drücken ich Taste und verwenden Sie die Pfeiltasten oder h, j, k, l.


11
2017-11-21 07:14





Ich hatte genau das gleiche Problem aber nicht nur auf meinem lokalen Rechner, sondern auch auf Verbindungen via Putty auf einer Sledmaschine in einer Win7 VM über einen Citrix-Empfänger. Sowohl der lokale Host als auch die entfernten Hosts zeigen nach einer Neuinstallation von Ubuntu genau das gleiche Problem.

Nachdem ich das herausgefunden habe

$ localectl list-keymaps 
Couldn't find any console keymaps.

Verursacht dieses seltsame VI-Verhalten Ich habe das Paket console-data installiert, das das Problem löst!

sudo apt-get install console-data

6
2018-01-18 10:53





Alle Erklärungen sind etwas bizarr. Ich habe vi aber nicht vim installiert.

Alternativen prüfen: /etc/alternatives/vi &rechter Pfeil /usr/bin/vim.tiny

Damit vi ist vim.tinyund es benutzt /etc/vim/vimrc.tiny.

Und in vimrc.tiny Du findest die folgende Zeile:

set compatible

Was ist fast das einzige in dieser Datei. Beachten Sie, dass in /etc/vim/vimrc es benutzt nocompatible.

Installieren Sie entweder vim, oder ändern Sie die vimrc.tiny Datei oder erstellen Sie Ihre eigenen ~/.vimrc was sollte die Zeile enthalten:

set nocompatible

3
2018-01-10 22:11



Ich bin mir nicht sicher, was so bizarr ist. Am Ende schlägst du vor: 1. Installiere Vim - askubuntu.com/a/220072/158442, 2. Erstellen ~/.vimrc und Einstellung nocompatible: askubuntu.com/a/353944/158442oder 3. Bearbeiten einer Systemdatei. Nur der Vorschlag zum Bearbeiten /etc/vim/vimrc.tiny ist neu, und doch nennst du Antworten bizarr, während du dasselbe vorschreibst wie sie. - muru


Der traditionelle vi-Editor erkennt die Pfeiltasten nicht (... afair). Es gibt zwei Lösungen:

  1. Verwenden Sie vim anstelle von vi
  2. Verwenden Sie h, j, k und l, um zu navigieren (Sie können nicht navigieren, während Sie auf dem traditionellen vi btw arbeiten.)

1
2017-10-05 05:51



Das ist nicht wahr. Suchen Sie nach terminfo / termcap- und libcurses-basierten Apps. Ich benutze vi seit 1990 in Xenix, SCO Unix, AIX, alte hpux und andere, und pure-vi aus den 80er Jahren haben bereits Unterstützung für terminfo / termcap-Mappings. - Luciano
@ James-Wong gut, dann sollte ich meine Antwort umformulieren. Zu "reinem vi unter Ubuntu nicht ..." - MadMike
... und das war als Kommentar zu @luciano gedacht - MadMike


Hinweis:

Es gibt gute Informationen in den anderen Posts, aber keiner der Posts versuchte es zu erklären Warum Dieses Verhalten ist passiert. Viele Menschen werden in Zukunft darüber stolpern. Könnten Sie diese Frage auch als gelöst markieren, da Ihnen einer der früheren Beiträge wahrscheinlich geholfen hat?


Hier ist eine Erklärung:

Vi ist ein Redakteur, der schon lange auf den Unix-Systemen zurückliegt. Es ist ein gutes Werkzeug, aber es wurde wiederholt und jetzt ist es besser. Vim wurde später geschrieben und ist diese Iteration. Leute bezeichnen vi gewöhnlich als 'vim-minimal' und vim ist eine 'verbesserte' Version von vi. Sie können es sich so vorstellen: vi ist der Kern und vim erweitert sich darauf.

Wahrscheinlich, wie Sie das Verhalten entdeckt haben:

Damit Sie dieses Problem entdeckt haben, haben Sie gedrückt "ich"eintreten einfügen Modus und dann mit den Pfeiltasten, um die richtige Linie und Schnittpunkt zu navigieren. Dies hat Ihr unerwartetes Char-Problem verursacht.

Lösung 1 oder 2

1) vi someFile Während dem Benutzen vi, gehen Sie zuerst zum Bearbeitungspunkt und dann in den Einfügemodus.

2) vim someFile Einfach benutzen Vim von Anfang an.

Ich kann nicht genug betonen, um das Handbuch zu lesen (man-Seiten) oder -h zu benutzen. Sobald Sie sich an die Muster in der Shell angepasst haben, werden die Man Pages zu Ihrem besten Freund. Beispiel: man vi oder man vim


Überprüfen Sie, ob Vim installiert ist.

Öffnen Sie ein Konsolenfenster und führen Sie Folgendes aus:

dpkg --list | grep vim

Wenn Sie etwas Ähnliches bekommen, können Sie einfach anfangen, vim zu benutzen.

~ $ dpkg --list | grep vim
ii  vim         2:7.4.052-1ubuntu3  amd64  Vi IMproved - enhanced vi editor
ii  vim-common  2:7.4.052-1ubuntu3  amd64  Vi IMproved - Common files
ii  vim-runtime 2:7.4.052-1ubuntu3  all    Vi IMproved - Runtime files
ii  vim-tiny    2:7.4.052-1ubuntu3  amd64  Vi IMproved - enhanced vi editor - compact version

Wenn die Eingabeaufforderung mit nichts zurückkehrt, wird vim is nicht installiert. Verwenden Sie die folgenden Beispiele, um Ihre Repositorys zu aktualisieren, und installieren Sie dann vim.

sudo apt-get update
sudo apt-get install vim

Auf die Chance, dass Sie vi oder vim nur bei der Suche im Internet verwenden, wie Sie etwas reparieren und Sie vergessen zu tippen vimEs gibt einen Weg, den du für die Zukunft reparieren kannst. Ich warne dich, darauf zu achten. Sie können einen Alias ​​verwenden, um vi mit einem Verweis auf vim zu überschreiben, so dass egal was Sie in der seltenen Zukunft eingeben, Sie vim ohne "oops!" Moment. Sie können einen Alias ​​später immer löschen.

Art vim .bashrc. Bewegen Sie sich mit nur einer Taste in die leere Zeile ~ (oder zu jeder anderen Zeile, die mit beginnt alias (so sind sie zusammen gruppiert) und dann drücken Sie die ich Taste um in den Einfügemodus zu gelangen. Geben Sie in einer eigenen Zeile Folgendes ein:

alias vi='vim'

Drücken Sie Esc und dann tippen Sie ein :wq. Jetzt müssen Sie die Datei neu laden. Art source .bashrc Jede andere Shell, die nach diesen Änderungen geöffnet wird, lädt automatisch die .bashrc-Datei.


1
2017-10-30 04:20