environment/home/.config/nvim/lua/keymaps.lua

64 lines
2 KiB
Lua
Raw Normal View History

2025-08-01 12:52:57 +02:00
local map = vim.keymap.set
map('n', '<leader>ff', require('telescope.builtin').find_files, { desc = "Find files" })
map('n', '<leader>fg', require('telescope.builtin').live_grep, { desc = "Live grep" })
map('n', '<leader>fb', require('telescope.builtin').buffers, { desc = "Buffers" })
map('n', '<leader>fh', require('telescope.builtin').help_tags, { desc = "Help tags" })
-- Project-specific ignored dirs for Telescope
local function load_local_ignore()
local cwd = vim.fn.getcwd()
local config_path = cwd .. "/.nvim.lua"
if vim.fn.filereadable(config_path) == 1 then
local ok, config = pcall(dofile, config_path)
if ok and config.fzf_ignore_dirs then
return config.fzf_ignore_dirs
end
end
return {}
end
local ignored = load_local_ignore()
local ignore_patterns = vim.tbl_map(function(d) return "**/" .. d .. "/*" end, ignored)
require('telescope').setup {
defaults = {
file_ignore_patterns = ignore_patterns,
}
}
-- za: Telescope open in current tab
vim.keymap.set('n', 'za', function()
require("telescope.builtin").find_files()
end, { desc = "Telescope: open file in current tab" })
-- zt: Telescope open in new tab
vim.keymap.set('n', 'zt', function()
require("telescope.builtin").find_files({
attach_mappings = function(_, map)
map("i", "<CR>", function(prompt_bufnr)
local actions = require("telescope.actions")
local action_state = require("telescope.actions.state")
local entry = action_state.get_selected_entry()
actions.close(prompt_bufnr)
vim.cmd("tabedit " .. entry.value)
end)
return true
end,
})
end, { desc = "Telescope: open file in new tab" })
-- FZF
vim.keymap.set('n', 'zs', ':FZF<CR>', { noremap = true, silent = true })
vim.api.nvim_create_user_command('FZFInTab', function()
vim.fn['fzf#run'](vim.fn['fzf#wrap']({
sink = function(selected)
vim.cmd('tabedit ' .. selected)
end
}))
end, {})
vim.keymap.set('n', 'zy', ':FZFInTab<CR>', { noremap = true, silent = true })