vi
Bashまたはコマンドライン編集モードをどのように設定し、emacs
現在どのモードが設定されているかを確認するにはどうすればよいですか?
答え1
到着set
:
set -o vi
または:
set -o emacs
(1つを設定すると、もう1つは設定解除されます。set -o vi +o vi
両方を設定解除できます。)
行って確認してください:
if [[ -o emacs ]]; then
echo emacs mode
elif [[ -o vi ]]; then
echo vi mode
else
echo neither
fi
構文はksh
POSIXset -o vi
から来ます。set -o emacs
いいえ(Richard Stallmanがemacs
POSIX指定モードに反対したため)。しかし、これはシェルの実装では一般的です。一部のシェルは追加の編集モードをサポートしています。[[ -o option ]]
POSIXではありませんが、ksh、bash、zshでサポートされています。 、および でサポートされています[ -o option ]
(バイナリOR演算子でもあります)。bash
ksh
yash
-o
[
答え2
あなたの質問はbashに関するものなので:
新しいセッションごとに恒久的に設定するには:
echo 'set -o vi' >> ~/.bashrc
または(推奨)./inputrcに1行を追加(または変更)します。
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
答え3
しかもbind -V | grep editing-mode
。
man bash
膨大な内容ですが、深く読んでみる価値が十分にあります。