シェルでviコマンドモードになっていて、8のような数字を押すと、行の先頭に「(arg:8)」と表示されます。誰もがそれをしないようにする方法を知っていますか?入力している行を移動すると、気が散ります。
の代わりに:
(arg: 8) somecmd --itslong --reallylong
この:
somecmd --itslong --reallylong
問題のあるコードは次のとおりです。lib/readline/misc.c
109行目と241行目を削除すると、メッセージが削除されます。
vi
(実際のエディターまたはBashモード)でコマンドモードを使用している場合、数字を押すと引数(したがって「arg」)が入力されます。これは通常、次の操作を実行するための繰り返し回数を設定するために使用されます。コマンド。これを回避するには、入力モードにする必要があります(を押して i たとえば)数字を押す前。
デモンストレーション:
Viモードでない場合は、次を使用して入力できます。
set -o vi
(emacsモードに入るとviモードを終了できます:set -o emacs
)
ここで、vi入力モードで次のようなコマンドを入力します。
echo abcdefghijk4
上記のように、最後に数字の「4」が表示されます。
今プレス Esc。カーソルが1文字左に移動し、コマンドモードになります。
数字を押して、「3」としましょう。今、あなたはこれを見るでしょう:
(arg: 3) echo abcdefghijk4
ここで大文字のXを押します。次のように表示されます。
echo abcdefgh4
Readline(Bashのコマンドライン入力エディター)に3文字を「削除」するように指示したため、3文字( "ijk")が削除されました。
今プレス i および任意の数字。数字は、カーソルがあった場所のコマンドラインに挿入されました。
Viモードの数字キーを再バインドして、arg: N
の繰り返しがトリガーされないようにすることができます。
~/.bashrc
に以下を挿入してみてください(または、最初にアクティブな端末でテストできます)。
bind -m vi 3:self-insert
次に、Escape
を押して3
と入力してみてください。番号3が印刷されます。ただし、挿入モードでないときに数値を印刷したくない場合があるため、これはおそらく適切な動作ではありません。挿入モードでないときに数字キーを完全に無効にするには、すべての数字に対して次の手順を実行します。
bind -m vi N:
(N = {0..9}の場合)。
~/.bashrc
に、次を追加できます。
for N in {0..9};
do
bind -m vi $N:
done