vi
またはemacs
コマンドライン編集モードをBashに設定する方法と、現在設定されているモードを確認する方法
あなたの質問は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
は(POSIXによって指定されているemacs
モードにRichard Stallmanが異議を唱えたように)ではありませんが、シェル実装間で非常に一般的です。一部のシェルは、追加の編集モードをサポートしています。 [[ -o option ]]
はPOSIXではありませんが、ksh、bash、zshでサポートされています。 [ -o option ]
はbash
、ksh
およびyash
でサポートされています(-o
もバイナリですORの演算子[
)。
もあります bind -V | grep editing-mode
。
man bash
は巨大ですが、詳しく読む価値があります。