一度に「8」を「7」に変更するには?

一度に「8」を「7」に変更するには?

Linux端末では、最初に次のコマンドを入力しました。

tail -n +80 numbers.txt

私は間違いをしたことに気づき、実際に+80の代わりに+70を使いたかったので修正したかったです。これを行うには、カーソルを数字「8」に移動して「7」と入力し、「8」の前に「7」を挿入すると、結果は「780」になります。 「70」を取得するには、「8」を削除する必要があります。しかし、このプロセスは遅いようです。単に「8」を「7」に置き換えるように、1つのステップで「8」を「7」に直接変更する方法はありますか?

答え1

Bashで履歴拡張を有効にすると(デフォルトでは有効ですが、一部は無効です)、入力は置換が^old^new適用された最後のコマンドを再実行します(略語だと思います!:s/old/new/)。したがって、あなたの場合、コマンド^8^7全体をナビゲートするために矢印キーを使用する必要はありません。

を入力してください新しい tail -n +70コマンドを押した後、前のコマンドAlt.の最後の引数を挿入することは、前のコマンドを編集するよりも速くなる可能性があります。同様にtail -n +70 $_、同じことを行う必要があります。

(より複雑な変更の場合:キーを押すと、CtrlxコマンドCtrleを編集してすぐにコミットできるデフォルトエディタ($ VISUAL)が開きます。)

答え2

bashを使用すると仮定すると、オーバーレイモードデフォルトでは無効になっており、ショートカットにはバインドされません。

オーバーレイモードを切り替えます。明示的な正の引数を使用してオーバーライドモードに切り替えます。正でない明示的な数値引数を使用すると、挿入モードに切り替わります。このコマンドはemacs モードにのみ影響します。viモードは実際には異なる方法でオーバーライドされます。各呼び出しはreadline() 挿入モードで開始されます。

self-insertオーバーレイモードでは、テキストを右にスライドさせるのではなく、文字は必ずそのポイントのテキストを置き換えます。backward-delete-charドットの前の文字はスペースで置き換える必要があります。

デフォルトでは、このコマンドはバインドされません。

キーバインディングを追加して有効にし、操作が完了したら再度無効にすることができますが、最善の方法は次の方法を使用することです。delete-char代わりに、デフォルトのバインディングは次のとおりですCtrld

その時点で文字を削除します。 [...]

カーソルが点灯している場合は、を8押しCtrldて削除し、7と入力します。

存在するviモード、すでに8:にいるとき<Esc>r7。または、<Esc>F8r7カーソルを最初の項目(行の末尾から始まる)に移動してから置き換えて、8すべての操作を実行できます7

関連情報