vimコマンド出力をクリップボードへコピー
vimコマンド出力をクリップボードへコピー*1するためには以下のようにすればいいみたい。
例えばノーマル、ビジュアル、演算待ち状態時のキー定義一覧(:map)をクリップボードへコピーするためには以下の3つのコマンドを実行する。
:redir @*> :silent map :redir END
silentは付けとかないと画面へも出力されるので鬱陶しい。
もちろん
:redir @*> :silent map :silent map! :redir END
みたいに複数のコマンドを挟んでも可。':redir @*>'の部分を':redir @a>'にすると、レジスタaに代入される。また、':redir @*>>'にするとクリップボードに追記される。詳しくは:help redirect参照。
こんなもの忘れるわ!
という人はユーザvimrcファイルに以下のようなコマンドを追加しておくといいかも(1コマンドの出力をクリップボードへコピー)
func! s:func_copy_cmd_output(cmd) redir @*> silent execute a:cmd redir END endfunc command! -nargs=1 -complete=command CopyCmdOutput call <SID>func_copy_cmd_output(<q-args>)
コマンドライン補完も働いて結構便利。(12/01/13修正 call s:→call
ユーザvimrcファイルの実行時間を1usでも速くしたい人や無駄なメモリは1バイトも許容できない人は関数をautoloadスクリプト内に書くといい。