vimを使用して現在のコマンドラインコマンドを置き換える方法は?

vimを使用して現在のコマンドラインコマンドを置き換える方法は?

私はコマンドラインでvimを使います。現在CLIで使用しているコマンドラインの文字を検索して置き換えるには、置換コマンドを使用したいと思います。

これは単なる例であり、ファイル名を変更して次のコマンドを作成するとします。

mv here_is_a_way_too_long_filename.txt here_is_a_way_too_long_filename.txt

ファイル名がかなり長いので、便宜上、タブ補完を使用して2番目のファイル名を生成しました。今、下線を別のものに変更したいと思います\。たとえば。

私はCLIでvimを使用しているので、ESC通常モードでEnter(vim)を押し、2番目のファイル名の先頭に移動して:Enter Commandを押しますs/_/\ /。ちなみに:ここに入ったときは、次のことを見ました。

mv here_is_a_way_too_long_filename.txt here_is_a_way_too_long_filename.txt
execute: s/_/xxx/

しかし、スペースを入力できません。またはこのvim置換コマンドを実行するには、Enterを押します。実際execute:、この追加行でのみ終了を押すことができます^C

また、交換命令のいくつかの変形を試みたが、役に立たなかった。

s/_/xxx/
gs/_/xxx/
%s/_/\\ /  ← NB: I can’t actually enter the space here.
s/_/\\s/
s/_/[:space:]/
... and so on

コマンド履歴に頼りたくありません。この投稿コマンド履歴で前のコマンドに対して同様の操作を実行する方法について説明します。

上記の例では、私が得たい結果は次のとおりです。

mv here_is_a_way_too_long_filename.txt here\ is\ a\ way\ too\ long\ filename.txt

次に、Enterキーを押してmvシェルからコマンドを実行します(例zsh:)。

可能であれば、CLIでvimを使用してこれを実行したいと思います。ファイル名の空白の説明は、リスクを認識していると仮定すると、範囲外です。

関連情報