Antworten:
Da Ihre Frage spezifisch für Bash ist:
So stellen Sie es für jede neue Sitzung dauerhaft ein:
echo 'set -o vi' >> ~/.bashrc
oder (empfohlen) eine Zeile in ./inputrc hinzufügen (oder ändern):
set editing-mode vi
Dadurch wird der Bearbeitungsmodus von readline festgelegt, der von mehreren anderen Programmen neben bash verwendet wird.
Es ist einfach, beide Optionen zu deaktivieren:
shopt -ou vi emacs
So stellen Sie eine ein:
set -o vi
Oder
shopt -os vi
Das gleiche gilt für emacs
. Einstellen von vi
Unsets emacs
und umgekehrt.
So listen Sie den Status auf:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
Oder beides gleichzeitig:
$ shopt -op emacs vi
set +o emacs
set -o vi
So testen Sie, ob vi
eingestellt ist:
shopt -oq vi && echo vi is set
Oder (ksh-Syntax):
[[ -o vi ]] && echo vi is set
Emacs:
shopt -oq emacs && echo emacs is set
Oder:
[[ -o emacs ]] && echo emacs is set
oder, um zu testen, ob keine Option festgelegt ist:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
An set
:
set -o vi
Oder:
set -o emacs
(Wenn Sie eins einstellen, wird das andere deaktiviert. Sie können set -o vi +o vi
beide deaktivieren. )
Überprüfen:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
Diese Syntax kommt von ksh
. Das set -o vi
ist POSIX. set -o emacs
ist nicht (wie Richard Stallman gegen den emacs
von POSIX angegebenen Modus protestierte ), aber bei Shell-Implementierungen sehr verbreitet. Einige Shells unterstützen zusätzliche Bearbeitungsmodi. [[ -o option ]]
ist nicht POSIX, sondern wird von ksh, bash und zsh unterstützt. [ -o option ]
wird unterstützt von bash
, ksh
und yash
(beachten Sie, dass dies -o
auch ein binärer ODER-Operator für ist [
).
set -o | egrep -w '^emacs|vi'
gibt zurück, ob emacs oder vi gesetzt ist.