zoxideとVim/Neovimの連携
:Zコマンドでディレクトリ移動ができる
:Ziコマンドで対話的にディレクトリ移動ができる
DirChangedが発生した際にzoxide addを実行してくれる
セットアップ
code:init.lua
-- ...
{
'nvim-telescope/telescope.nvim',
dependencies = {
'nvim-lua/plenary.nvim',
},
lazy = true,
cmd = 'Telescope',
config = function()
-- ...
end,
},
{
'jvgrootveld/telescope-zoxide',
lazy = true,
dependencies = { 'nvim-telescope/telescope.nvim' },
config = function()
require('telescope').load_extension('zoxide')
end
},
{
'nvim-lua/plenary.nvim'
}
-- ...
Ziコマンドで対話的にディレクトリを移動できるようにします
code:init.lua
vim.api.nvim_create_user_command(
'Zi',
'Telescope zoxide list',
{}
)
code:init.lua
local checked_zoxide = false
vim.api.nvim_create_autocmd('DirChanged', {
group = vim.api.nvim_create_augroup('zoxide', { clear = true }),
callback = function(event)
-- Run zoxide add on DirChanged.
local cmd = 'zoxide'
if not checked_zoxide and vim.fn.executable(cmd) == 0 then
vim.api.nvim_del_autocmd(event.id)
return
end
checked_zoxide = true
vim.system({ cmd, "add", event.file }, {}, function(out)
if out.code ~= 0 then
error(out.stderr)
end
end)
end
})