Wie bewege ich den Cursor im Bash-Modus im vi-Modus schnell zum Ende?

7

Wenn ich mich im Einfügemodus befinde und mich von der letzten Cursorposition (der leeren Stelle rechts vom letzten Zeichen) nach links bewege, kann ich nicht mehr zu dieser Position zurückkehren. Ich habe zu schreiben Esc$a(oder ersetzen $mit einem Bündel Zeiten) dorthin zu gelangen. Es scheint eine Menge zusätzlicher Tastenanschläge zu sein, um beispielsweise das letzte Zeichen zu löschen (und sich immer noch im Einfügemodus zu befinden).

Gibt es einen besseren Weg oder sollte ich nur den Standard-Emacs-Modus verwenden (obwohl ich keinen einzigen Emacs-Befehl kenne)?

hobbes3
quelle

Antworten:

5

Im normalen Modus starten Sie die Bearbeitung am Zeilenende mit Shift+ A.

Im Einfügemodus sollten Sie zu EOL wechseln können.

Im Handbuch:

man readline
/VI Mode bindings<Enter>

In Bezug auf die reale / andere Frage muss ich ein wenig ausfüllen:

$ le eds de x
      ^     ^^
      |     ||
      A     BC

Meinen Sie im Einfügemodus, dass Sie nicht Cnur Bvon zu wechseln können A?

Auch mit oder End?

Wenn Sie also mit der Eingabe beginnen, werden die Buchstaben vorher eingegeben x?

Runium
quelle
1
Ich kann nicht mehr zurückkehren, Cwenn ich diese Position im Einfügemodus belasse. Wenn ich mich also ganz nach links bewege und mit der Eingabe beginne, ist das xZeichen immer das letzte Zeichen. Außerdem habe ich keinen EndSchlüssel (MacBook Pro).
hobbes3
@ hobbes3: Hast du auch eine .inputrcDatei?
Runium
Nein, ich nicht. Gibt es noch etwas, auf das ich testen sollte? Mir ist aufgefallen, dass ich mit CCentOS set -o viauf meine zugreifen kann .bashrc. Ich denke, dieses Problem ist spezifisch für das Mac OS X-Terminal.
hobbes3
1
Ich habe das getan und es macht das Gleiche (kann nicht dazu kommen C). So seltsam. Es muss eine Mac Terminal Einschränkung sein ...
hobbes3
2
@ hobbes3: Klingt dann wie ein Bug. (Schwer zu argumentieren als Feature .) Ich habe einen Ping / eine Frage mit Link hier auf chat @ apple.stackexchange.com
Runium
4

Sie können einfach die EndTaste drücken, um dorthin zu gelangen.

Sie können auch Shift + A(Großbuchstabe A - zum Anhängen ) verwenden, um Sie am Ende einer Zeile in den Einfügemodus zu versetzen.

BriGuy
quelle
2

Ich weiß, dass dies eine alte Frage ist, aber ich habe mir jetzt seit ein paar Tagen den Kopf darüber geschlagen und ich habe es endlich verstanden. Es stellt sich heraus, dass die Lösung einfach ist: Aktualisieren Sie Bash auf 4.3 . Die Standard-Bash auf Macs (sogar Yosemite) ist 3.2.

Installieren Sie Homebrew mit

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

dann mach

brew install bash

Ändern Sie dann Ihren Standard-Shell-Pfad (in den Terminaleinstellungen) in

/usr/local/bin/bash

und das ist es. Überprüfen Sie Ihre Bash-Version mit

bash --version

und als zusätzlichen Bonus können Sie Modusanzeigen erhalten!

bind 'set show-mode-in-prompt on'

und es wird ein +für den Einfügemodus und :für den Befehlsmodus angezeigt.

Riju Dasgupta
quelle
Das hat mich so lange nervt - danke! :) Übrigens habe ich ein Upgrade mit Macports durchgeführt und sudo port install bashdann den Befehl in den Terminaleinstellungen auf/opt/local/bin/bash
JobJob
0

Sie können :10000oder mehr verwenden, um zur letzten Zeile zu gelangen

user39777
quelle
:xBewegen Sie sich zu einer bestimmten Zeile, nicht innerhalb der Zeile.
Mat