Bash Verwendung von vi oder Emacs
-
19-09-2019 - |
Frage
Aus Sicht der Programmierung, wenn Sie die Bash-Shell gesetzt vi oder Emacs zu verwenden, über
set -o vi
oder
set -o emacs
Was ist eigentlich los hier? Ich habe ein Buch gelesen, wo es die Anwendungen entweder diese Editoren Bash-Shell für die Eingabe an dem Shell behauptet selbst, aber ich dachte, es gebrauchte Readline- hat.
Lösung
Bash verwendet noch Readline-. Readline- verwendet entweder emacs oder vi-Modus und den Modus-Schalter Modi zwischen den verschiedenen Editor einstellen. Sie können die lib / Readline- Ordner in der Basis Quellcode überprüfen Sie die verschiedenen Tastenbelegungen zu sehen.
Andere Tipps
Nach der Manpage BASH_BUILTINS (1) (auf Fedora 8):
set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
... (alle einzelnen Buchstaben Optionen Überspringen)
-o option-name The option-name can be one of the following:
...
emacs Use an emacs-style command line editing interface. This is enabled by default when the shell is interactive, unless the shell is started with the --noediting option....
vi Use a vi-style command line editing interface.Ich interpretiere, dass bash bedeuten direkt die Befehle für die Zeilenbearbeitung interpretiert. Diese Option einfach Sätze, die auf dem Einsatz-Befehlssatz. Siehe Manpage für Readline- (3).
Es verwendet die Tastenanschläge, die für die Nutzer eines dieser Editoren zu bearbeiten die Befehlszeile vertraut sind.
Readline ist die Einrichtung, die diese Funktion zu Bash und anderen Programmen zur Verfügung stellt.
Von man bash
:
READLINE This is the library that handles reading input when using an interac‐ tive shell, unless the --noediting option is given at shell invocation. Line editing is also used when using the -e option to the read builtin. By default, the line editing commands are similar to those of emacs. A vi-style line editing interface is also available. Line editing can be enabled at any time using the -o emacs or -o vi options to the set builtin (see SHELL BUILTIN COMMANDS below). To turn off line editing after the shell is running, use the +o emacs or +o vi options to the set builtin.
Von dem, was ich weiß, readline
ist, was die Line-Bearbeitung Funktionalität für bash bietet.
Eine Bedingung:., Wenn Sie v
in vi Kommandomodus drücken, können Sie die Blas- vi
Editor bearbeiten erhalten Sie Ihre Befehlszeile
Von man bash
:
Readline-
Dies ist die Bibliothek, die Griffe Eingang lesen, wenn eine interaktive Shell verwenden, es sei denn, die--noediting
Option bei Shell Aufruf gegeben. Standardmäßig sind die Zeilenbefehle Bearbeitung ähnlich denen von Emacs. Eine vi-Stil Linie Bearbeitung Schnittstelle ist ebenfalls vorhanden. So deaktivieren Sie die Zeilenbearbeitung nach der Shell ausgeführt wird, verwenden Sie die+o emacs
oder+o vi
Optionen zumset
builtin.
Wenn die Schale präsentiert Sie mit einer sofortigen (es sei denn, Sie in nicht-Editiermodus sind), du bist bereits mit readline
. Sie werden entweder in Emacs-Modus oder vi Insert-Modus sein (weshalb man nur ESC
verwenden kann, um vi Kommandomodus zurück zu bekommen).