Bashのコマンドライン編集モードを設定および決定する方法


10

Bash viまたはemacsコマンドライン編集モードを設定する方法と、現在設定されているモードを確認する方法

回答:


6

あなたの質問は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

16

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がemacsPOSIXで指定されているモードに異議を唱えているように)ではなく、シェル実装間で非常に一般的です。一部のシェルは、追加の編集モードをサポートしています。[[ -o option ]]POSIXではありませんが、ksh、bash、zshでサポートされています。[ -o option ]支持されbashkshそしてyash(音符-oものバイナリOR演算子です[)。


それが機能し、驚くべきことに、モードを決定するのはそれほど難しいことではありません。
Blcknx

4
set -o | egrep -w '^emacs|vi'emacsまたはviが設定されているかどうかを返します。
スティーブンハリス

4

もありbind -V | grep editing-modeます。

man bash 巨大ですが、詳しく読む価値があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.