はじめに
Vim で試しにオプション設定を行い、それが良かったので vimrc に書こうとした際にその設定内容が手入力するには長かったり複雑だったりして困ったことはないでしょうか。set {option}?
の結果などをバッファに挿入できれば…と思って調べて回った結果その方法が見つかったので書きます。
使用する機能
以下の機能を使います。
- レジスタの内容を挿入(
i_CTRL-R
) - Expression レジスタ
- execute コマンド
詳細
レジスタの内容を挿入
インサートモードでレジスタの内容を挿入するには CTRL-R
を入力したあとにレジスタ名を入力します。
Expression レジスタ
レジスタには番号のレジスタ以外に特別なレジスタがあり、その一つが Expression レジスタです。
インサートモードで CTRL-R
を入力したあとに =
を入力するとコマンド行に式を入力できるようになります。式を入力してEnterキーを入力すると式が評価されてその結果が挿入されます。
execute コマンド
Exコマンドを実行して出力を文字列として返すコマンドです。
オプション設定をバッファに挿入する
上記の機能を組み合わせることで Vim のオプション設定をバッファに挿入することができます。
- インサートモードに入る
CTRL-R
を入力=execute("set {option}?")
を入力- Enter キーを入力
例えばインサートモードで CTRL-R
を入力した後、以下のように入力すると
=execute("set guifont?")
以下のような結果がバッファに挿入されます。
guifont=Osaka-Mono:h14
実行してみればわかりますが、なぜか直前に空行が挿入されます。
これについては理由がわかっていません。(知っている方がいらっしゃったら教えて欲しいです…)
最後に
ちょっとした小ネタではありますが、これで vimrc の編集が少し楽になる場合があるんじゃないかなと思っています。