パーソナルツール

viminfoファイルを利用して、vimエディタウィンドウ間でデータを転送する

作者: 小見 拓 最終変更 2012年01月08日 11時57分

vimエディタの作業中の状態を一度、.viminfoファイルに書き出してから、 別のvimエディタで.viminfoファイルを読み込むことにより、 ウィンドウ間でヤンクのデータ、レジスタ、コマンド履歴、検索履歴などの情報を 共有する方法を紹介します。 (Windows, Mac)

概要

vimエディタの作業中の状態を一度、.viminfoファイルに書き出してから、
別のvimエディタで.viminfoファイルを読み込むことにより、
ウィンドウ間でヤンクのデータ、レジスタ、コマンド履歴、検索履歴などの情報を
共有する方法を紹介します。

データの移動

.viminfoファイルについて

.viminfoファイルは、通常、vimエディタの終了時に作成、更新されるファイルで、 コマンド、検索履歴、レジスタなどの情報が格納されています。 vimエディタが前回編集時の情報を最初から持っているのは、 .viminfoファイルを起動時に読み込んでいるためです。

この.viminfoファイルは、vimエディタ終了時、起動時以外でも、 「:wv」コマンド、「:rv」コマンドを実行すれば読み書きできるので、
.viminfoファイルを経由して、 レジスタや各種履歴データを、あるウィンドウからあるウィンドウまで渡してしまおう、
というのが今回の話になります。

参考: vimエディタが(勝手に)作成する、一見、不要に見えるファイルが何をしているか

作業手順

例として、vimエディタのウィンドウが2つあり、 片方のウィンドウからもう一方のウィンドウに
データを転送する場合の作業手順を説明します。

実行前の段階では、2つのウィンドウのレジスタの状態は違う

転送元のvimエディタで、.viminfoファイルを出力する

まず、データを送り込む側のvimエディタウィンドウで「:wv」コマンドを実行し、
現在の状態を.viminfoファイルに書き出します。

:wv
状態をviminfoファイルに書き出す

転送先のvimエディタで、.viminfoファイルを読み込む

次に、データを受け取る側のvimエディタに移動し、
「:rv!」コマンドで.viminfoファイルに記述されたデータを読み込み、 現在の状態を上書きします。

:rv!
状態をviminfoファイルから読み込む

データが転送されました

この操作を行うと、.viminfoファイルを読み込んだ側のvimエディタで、
渡されたヤンクのデータ、レジスタ、ファイルのマーク情報、コマンド履歴、検索履歴などを 操作できるようになります。

実行後、2つのウィンドウのレジスタの状態は同じになった

.viminfoファイルで記録するデータ

この方法によりウィンドウ間で送信できるデータは、 .viminfoファイルに記録しているデータに限られます。
つまり、.viminfoファイルにデータを記録しない設定にしていると、 この方法は使用できません。

.viminfoファイルに記録するデータの設定方法は、 vimエディタのヘルプ「21.3」を参照してください。

:help 21.3

" optionsの項にも説明がある
:help options | /*'viminfo'*

注意事項など

実際の場面では、クリップボードを使ってウィンドウ間のデータの受け渡しを行えば 必要十分なケースが多いので、
クリップボードの使い方も知っておくと便利です。

参考: vimエディタからクリップボードを利用する。

ドキュメントアクション
コメント
blog comments powered by Disqus