denops.vim で neovim-remote 代替 !
またまた denops.vim で plugin
作成しました!
denops hitori !
機能概要
Neovim
が起動中の場合は新しくインスタンスを立ち上げるのではなく、既に起動中の Neovim
を使用する、というものです。
denops.vim で Websocket を立ち上げて起動済みの場合はパスを送信しています。
Vim
だと、 --remote
とかオプションがあるやつです。
また、 Vim
の場合は thinca さん作成の素晴らしいプラグイン vim-singleton があります。
(僕も Vim を使用していた時はずっとお世話になっていました。)
Neovim
も neovim-remote とかあるにはあるのですが、 Windows
に優しくなかったので作っちゃいました。
インストールと設定
インストールは folke/lazy.nvim だとこんな感じです。
- dps-hitori.lua
return {
"yukimemi/dps-hitori",
lazy = false,
dependencies = {
"vim-denops/denops.vim",
},
init = function()
" デバッグモード (設定すると echo いっぱい出る)
vim.g.hitori_debug = false
" 有効 / 無効
vim.g.hitori_enable = true
" 既に起動中の Neovim にパスを送信した後に Neovim を終了するかどうか
vim.g.hitori_quit = true
" Websocket サーバの port
vim.g.hitori_port = 7070
" 除外するファイルパターン。デフォルトは [] です。
vim.g.hitori_blacklist_patterns = { "\\.tmp$", "\\.diff$", "(COMMIT_EDIT|TAG_EDIT|MERGE_|SQUASH_)MSG$" }
end,
}
デフォルト設定があるので特に設定は不要です。
g:hitori_blacklist_patterns
だけは設定したほうがいいかもしれません。
hitori
!
ラップコマンド denops.vim のプラグインである以上、一度 neovim
が立ち上がって、 denops
が load されてからしか動作しません。
Linux
や Mac
だと十分速いのであまり気にならないのですが、 Windows
だとそうもいきません・・・。
なので、 Neovim
起動前に Websocket
でサーバが起動していたら Neovim
は起動せずにパスだけ Websocket
で送信する、というラップコマンドを Deno で書きました。
以下のコマンドでインストールできます。
-
nvim
を起動する場合
deno install --allow-net --allow-run --allow-read --name hitori https://raw.githubusercontent.com/yukimemi/dps-hitori/main/cmd/hitori.ts
-
nvim-qt
を起動する場合
deno install --allow-net --allow-run --allow-read --name hitori https://raw.githubusercontent.com/yukimemi/dps-hitori/main/cmd/hitori-qt.ts
hitori
コマンドがインストールされるので、以降は hitori
を実行すれば複数の Neovim
が起動されるのを防ぐことができます。
Windows
で gvim
を使用していた時は --remote-tab-silent
とかがあったので全然問題なかったのですが、いざ Neovim
に乗り換えると使えなく・・・。
ただ、このプラグイン (denops.vim のおかげ) で Windows
でも Neovim
に乗り換えることが無事にできました。
Windows
ではこのプラグインで nvim-qt
を使用しています。
Discussion