Welche Einstellung steuert die Bewegung des Cursors in der Befehlszeile?

Welche Einstellung steuert die Bewegung des Cursors in der Befehlszeile?

Auf manchen Unix-Systemen kann ich mit Strg-A oder Strg-E an den Anfang oder das Ende der Zeile springen. Auf manchen Unix-Systemen geht das nicht und es wird nur ^A oder ^E usw. ausgegeben. Wodurch wird gesteuert, ob dieser Tastendruck wie erwartet funktioniert (Bewegung in der Befehlszeile) oder ob die Zeichen ^A, ^E usw. ausgegeben werden?

Antwort1

Es hängt alles von der spezifischen Shell-Implementierung ab (Sie haben möglicherweise unterschiedliche Standard-Shells auf unterschiedlichen Systemen oder sogar für unterschiedliche Benutzer innerhalb eines einzelnen Systems, z. B. Bash, KSH, Tcsh usw.).

Es hängt auch von der Shell selbst ab.

Bash unterstützt beispielsweise zwei Modi: Emacs und Vi. Jeder Modus hat seine eigenen Tastenkürzel (ähnlich wie Emacs oder Vi). Um diese zu ändern, müssen Sie ausführen set -o emacs(normalerweise ist es ein Standardkürzel) oderset -o vi

Weitere Informationen finden Sie in Ihrer spezifischen Shell-Dokumentation.

Antwort2

tl;dr

set -o emacs

aktiviert die Emacs-Tastenkombinationen Strg-A, Strg-E, Strg-B usw. in den meisten Shells, die Sie wahrscheinlich verwenden.


Die Shell verfügt möglicherweise nicht über die Möglichkeit zur Zeilenbearbeitung oder befindet sich im viBearbeitungsmodus (der einzige, der von derStandard).

Außerhalb des emacsBearbeitungsmodus haben Strg-A und Strg-E keine besondere Bedeutung. Wenn die Einstellungen echound echoctlstty/termios aktiviert sind, werden alle nicht speziell behandelten Steuertasten in der "Caret"-Notation angezeigt ^A.^X

Viele Shells (wie kshoder zsh) bestimmen den Standardbearbeitungsmodus (vi oder emacs) basierend auf den Werten von VISUALund EDITORUmgebungsvariablen (in dieser Rangfolge und unter Verarbeitung von Varianten wie vim, elvis, xemacs, usw.).

Dies war (sehr ärgerlich!) in defekt mksh, ist aber auch in anderen pdkshvon abgeleiteten Shells immer noch der Fall.

Andere Shells bevorzugen bashoder tcshverwenden standardmäßig den emacsBearbeitungsmodus, aber dieser kann auch durch die Konfigurationsdatei der Zeilenbearbeitungsbibliothek überschrieben werden.

Für diereadlineBibliothek, die von bashund vielen anderen Programmen verwendet wird. Die Konfigurationsdatei ist (oder eine in der Umgebungsvariable ~/.inputrcangegebene Datei ) mit einem Fallback auf und die Einstellungen sind:INPUTRC/etc/inputrc

set editing-mode vi
set editing-mode emacs

Für die von vielen BSD-Programmen verwendete Bibliothek editline/ libedit[1] lautet die Konfigurationsdatei üblicherweise~/.editrcund die Einstellungen sind:

bind -v  # for vi
bind -e  # for emacs

[1] nicht zu verwechseln mit demlibeditlineReadline „work-alike“, das nur einen Emacs-Bearbeitungsmodus bereitstellt.

verwandte Informationen