回答:
あなたの質問はbashに固有なので:
新しいセッションごとに永続的に設定するには:
echo 'set -o vi' >> ~/.bashrc
または(推奨)、。/ inputrcに行を追加(または変更)します。
set editing-mode vi
これにより、bash以外のいくつかのプログラムで使用されるreadlineの編集モードが設定されます。
両方のオプションの設定を解除するのは簡単です:
shopt -ou vi emacs
いずれかを設定するには、次のいずれかを行います。
set -o vi
または
shopt -os vi
も同じですemacs
。設定vi
解除emacs
およびその逆の設定。
状態を一覧表示するには:
$ shopt -op emacs
set +o emacs
$ shopt -op vi
set -o vi
または両方同時に:
$ shopt -op emacs vi
set +o emacs
set -o vi
vi
が設定されているかどうかをテストするには:
shopt -oq vi && echo vi is set
または(ksh構文):
[[ -o vi ]] && echo vi is set
emacs:
shopt -oq emacs && echo emacs is set
または:
[[ -o emacs ]] && echo emacs is set
または、オプションが設定されていないことをテストするには:
! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set
へset
:
set -o vi
または:
set -o emacs
(一方を設定すると他方の設定が解除されます。set -o vi +o vi
両方の設定を解除することができます)
チェックする:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
その構文はから来ていksh
ます。これset -o vi
はPOSIXです。set -o emacs
(Richard Stallmanがemacs
POSIXで指定されているモードに異議を唱えているように)ではなく、シェル実装間で非常に一般的です。一部のシェルは、追加の編集モードをサポートしています。[[ -o option ]]
POSIXではありませんが、ksh、bash、zshでサポートされています。[ -o option ]
支持されbash
、ksh
そしてyash
(音符-o
ものバイナリOR演算子です[
)。
set -o | egrep -w '^emacs|vi'
emacsまたはviが設定されているかどうかを返します。