-- Setup fzf-lua keybindings local fzf = require('fzf-lua') vim.keymap.set('n', 'ff', fzf.files, { desc = "Find file" }) vim.keymap.set('n', 'fs', fzf.blines, { desc = "Search buffer" }) vim.keymap.set('n', 'fg', fzf.live_grep, { desc = "Grep" }) vim.keymap.set('n', 'fG', fzf.grep_cword, { desc = "Grep word under cursor" }) vim.keymap.set('n', 'fc', fzf.commands, { desc = "Commands" }) vim.keymap.set('n', 'fm', fzf.manpages, { desc = "Manpages" }) vim.keymap.set('n', 'b', fzf.buffers, { desc = "Buffers" }) vim.keymap.set('n', 'ft', ":TodoFzfLua", { desc = "Todos" }) -- use fzf buffer lines as default search vim.keymap.set('n', '/', fzf.blines, { desc = "Search buffer" }) vim.keymap.set('n', 'z=', fzf.spell_suggest, { desc = "Spelling suggestions" }) -- open file manager and git vim.keymap.set('n', 'g', ":Neogit", { desc = "Neogit" }) vim.keymap.set('n', 'T', ":Neotree reveal", { desc = "File Manager" }) -- -- configure workspaces -- also add a custom picker to fzf -- local workspaces = require('workspaces') workspaces_fzf_picker = function(opts) local fzf_lua = require('fzf-lua') opts = opts or {} opts.prompt = "Workspaces> " opts.actions = { ['default'] = function(selected) workspaces.open(selected[1]) end } fzf_lua.fzf_exec(function(fzf_cb) -- NOP local ws = workspaces.get() ws = ws or {} for i = 1, #ws do fzf_cb(ws[i].name) end fzf_cb() -- EOF end, opts) end vim.keymap.set('n', 'w', workspaces_fzf_picker, { desc = "Workspaces" } )