📌
Neovim で開くファイルを一つのインスタンスにまとめる
Vim には vim-singleton という素晴らしいプラグインがあります。これを使うと vim
コマンドで開くファイルをすべて一つの Vim のインスタンスにまとめることができます:
# Vim が起動していない状況を想定する。
$ vim hoge.md # 初回なので Vim が立ち上がって hoge.md が開く。
$ vim piyo.md # すでに開いている Vim があるので、そのウィンドウで piyo.md が開く。
Neovim でも似たようなことをしたかったのですが、vim-singleton は動きませんでした。Neovim 本体の機能としてリモート接続機能があったので、これを使って以下のようなコマンドを .zshrc に生やしたところうまく行きました:
function nvim(){
if [ "$#" -eq 0 ]; then
/usr/bin/nvim
else
socket=$(ls /run/user/1000/nvim.* | head -1)
if [ "${socket}" = "" ]; then
/usr/bin/nvim "$@"
else
/usr/bin/nvim --server ${socket} --remote-send "<C-\\><C-N>:n $(realpath $1 | sed -r "s/( |\"|')/\\\\\\1/g")<CR>" > /dev/null
fi
fi
}
かなりやっつけのスクリプトですが、とりあえず動いています。
Discussion