Vagrant+tmux環境下でvimのヤンクデータを共有する
はじめに
vagrant仮想環境で開発を進めているときにめっちゃイラッとすることが2つある。(※自分はMacとiTerm2を使っています。)
1に関してはtmuxを使うことによって回避できているが、2に関しては今までどうすることもできなかった。(調べても記事が無い)
なので、この2に関して力技でなんとかしてみた。
viminfoを使う
viminfoとはコマンド、検索履歴、レジスタなどの情報が格納されているファイルで、通常ホームディレクトリ以下に「.viminfo」の形で存在している。
※わかりやすい解説はこちら
このviminfoにレジスタのデータが書かれており、
# ヤンクした後に :wv # 別タブのvimで :rv!
とすることによって、ヤンクしたデータを複数ウィンドウ間で共有することができる。
これを利用して、ヤンクすると自動的に:wv
を実行し、ペーストすると自動的に先に:rv!
を実行させることで、わざわざコマンドを叩く事なく、軽快なヤンク+ペーストをさせることができる。
以下を.vimrc
に記述する。
"Linuxの場合はviminfoを用いてヤンクデータを共有 let OSTYPE = system('uname') if OSTYPE == "Linux\n" noremap y y:wv<CR> noremap p :rv!<CR>p endif set viminfo='50,\"3000,:0,n~/.viminfo
基本的にMacのローカル環境は共有できている前提で、今回はOSがLinuxの時のみ有効にさせたが、ローカルでも同じことがしたい場合はif
内を書いておけば良い。
またset
以下はviminfoの設定で、何行までヤンクしたデータを保存するのかを決めている。
こちらの記事を参照したほうがわかりやすいので詳細については今回は割愛する。