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.

War es hilfreich?

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 zum set 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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top