web-dev-qa-db-ja.com

シェルviモードの印刷(引数:繰り返し):それを削除する方法は?

シェルでviコマンドモードになっていて、8のような数字を押すと、行の先頭に「(arg:8)」と表示されます。誰もがそれをしないようにする方法を知っていますか?入力している行を移動すると、気が散ります。

の代わりに:

(arg: 8) somecmd --itslong --reallylong

この:

somecmd --itslong --reallylong
3
Justin Thomas

問題のあるコードは次のとおりです。lib/readline/misc.c

109行目と241行目を削除すると、メッセージが削除されます。

1
Justin Thomas

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
0
Achilleas