web-dev-qa-db-ja.com

VIM-同じ行に複数のコマンド

私はvimの同じ行で複数のコマンドを実行できるようにするものを見つけようとしました。これは、セミコロンを使用して* nixシステムのコマンドまたはWindowsの&を分離するようなものです。これを行う方法はありますか?

176
Bub Bradlee

バー|を使用すると、これを行うことができます。 :help :barから

'|'を使用してコマンドを分離できるため、複数のコマンドを1行で指定できます。引数で'|'を使用する場合は、'\'を前に付けます。

例:

:echo "hello" | echo "goodbye"

出力:

hello
goodbye

注意:~/.vimrc|または\|のマッピングをサポートしていない場合があります。これらの場合、代わりに<bar>を使用してみてください。

227
michaelmichael

コマンドの前後に<CR>(キャリッジリターン/エンター)を挿入します。例えば:

map <F5> :w<CR>:!make && ./run<CR>

|を使用しないでください:

  • コマンドの後に|を使用すると問題が発生するコマンドがあります

  • |は構成ファイルで一貫して機能しません。:help map_barを参照してください

82

コマンドを実行する関数を定義できます。

function Func()
     :command
     :command2 
endfunction

そして、これをたとえばvimrcに配置します。で関数を実行する

exec Func()
39
Jonatan

Vimのコマンド区切り文字は|です。

26
Daenyth

私はいつも^Jを使用して、複数のコマンドを分離するために Ctrl+v、 Ctrl+j

15
eruciform

これは、誰かがチェーンで置換を行おうとすると失敗するのに役立つかもしれないと思った

コメント から

% s/Word/newword/ge | % s/Word2/newword2/ge

eフラグを使用して、文字列が見つからない場合にエラーを無視できます。

10
Jerinaw

新しいファイルを作成して、コマンドを書き込むことができます。次に、:so %、つまりソースの現在のファイルを意味します。

2
Song