vimでコマンドの出力をキャプチャする

特定のファイルにコマンドの出力を書き出したいときはこれ
!をつけることで新規のファイルでも書き込める

:redir! > file
:echo 'aaa'
:redir end

これでaaaという文字列がfileに書かれる
ちなみにredirはrediと省略して書ける
また、rediはredirectの略
ファイルに追記したい場合は>>を使えばよい

:redi >> %
:echo 'bbb'
:redi end

これでbbbという文字列が現在編集中のファイルの末尾に追記される(bufferに反映させるには:e!する必要あり)

出力をレジスタに入れることもできる

:redi @a
:echo 'testtest'
:redi end

レジスタに入れてしまえば後はbufferで好きなように使える

redi endが実行されるまでの出力すべてがキャプチャされるため、その間にエラーなどが発生すればそれもすべてキャプチャされることに注意