56 lines
1.9 KiB
Lua
56 lines
1.9 KiB
Lua
-- Zoxide integration for Neovim
|
|
-- Allows you to use zoxide's smart directory jumping within Neovim
|
|
|
|
-- Install telescope-zoxide plugin
|
|
local gh = function(repo)
|
|
return 'https://github.com/' .. repo
|
|
end
|
|
|
|
vim.pack.add { gh 'jvgrootveld/telescope-zoxide' }
|
|
|
|
-- Configure telescope-zoxide
|
|
require('telescope').load_extension 'zoxide'
|
|
|
|
-- Keymaps for zoxide
|
|
vim.keymap.set('n', '<leader>cd', function()
|
|
require('telescope').extensions.zoxide.list()
|
|
end, { desc = '[C]hange [D]irectory with zoxide' })
|
|
|
|
-- Optional: Create a command to change directory using zoxide
|
|
vim.api.nvim_create_user_command('Z', function(opts)
|
|
local path = opts.args
|
|
if path == '' then
|
|
-- If no argument, open telescope picker
|
|
require('telescope').extensions.zoxide.list()
|
|
else
|
|
-- Otherwise, use zoxide to find and change to directory
|
|
local handle = io.popen('zoxide query -- ' .. vim.fn.shellescape(path))
|
|
if handle then
|
|
local result = handle:read '*a'
|
|
handle:close()
|
|
result = result:gsub('%s+$', '') -- trim trailing whitespace
|
|
if result ~= '' then
|
|
vim.cmd('cd ' .. vim.fn.fnameescape(result))
|
|
print('Changed directory to: ' .. result)
|
|
else
|
|
print('Directory not found in zoxide database')
|
|
end
|
|
end
|
|
end
|
|
end, { nargs = '*', desc = 'Change directory using zoxide' })
|
|
|
|
-- Optional: Create commands similar to zoxide's zi (interactive)
|
|
vim.api.nvim_create_user_command('Zi', function()
|
|
require('telescope').extensions.zoxide.list()
|
|
end, { desc = 'Interactive zoxide directory picker' })
|
|
|
|
-- Optional: Add zoxide entries when changing directories in Neovim
|
|
-- This keeps your zoxide database in sync with Neovim directory changes
|
|
vim.api.nvim_create_autocmd('DirChanged', {
|
|
callback = function()
|
|
local dir = vim.fn.getcwd()
|
|
vim.fn.system('zoxide add ' .. vim.fn.shellescape(dir))
|
|
end,
|
|
desc = 'Add directory to zoxide database when changing directories in Neovim',
|
|
})
|