diff --git a/modules/home-manager/cli/neovim/default.nix b/modules/home-manager/cli/neovim/default.nix index 77b4e28..b40ce80 100644 --- a/modules/home-manager/cli/neovim/default.nix +++ b/modules/home-manager/cli/neovim/default.nix @@ -65,7 +65,11 @@ in shfmt yamlfmt ]; - extraLuaConfig = (builtins.readFile ./files/options.lua); + extraLuaConfig = + (builtins.readFile ./files/options.lua) + + (builtins.readFile ./files/keybindings.lua) + + (builtins.readFile ./files/lsp.lua) + ; plugins = with pkgs.vimPlugins; [ { plugin = nvim-autopairs; diff --git a/modules/home-manager/cli/neovim/files/keybindings.lua b/modules/home-manager/cli/neovim/files/keybindings.lua new file mode 100644 index 0000000..aeaabe3 --- /dev/null +++ b/modules/home-manager/cli/neovim/files/keybindings.lua @@ -0,0 +1,49 @@ +-- clear search +vim.keymap.set('n', 'l', ':nohlsearch', { desc = 'Clear search', remap = true, silent = true }) + +-- Switch between windows. +vim.keymap.set('n', '', 'h', { desc = 'Move to the left window', remap = true }) +vim.keymap.set('n', '', 'j', { desc = 'Move to the bottom window', remap = true }) +vim.keymap.set('n', '', 'k', { desc = 'Move to the top window', remap = true }) +vim.keymap.set('n', '', 'l', { desc = 'Move to the right window', remap = true }) + +-- autocenter on search +vim.keymap.set('n', 'n', 'nzzzv', { desc = 'Next result' }) +vim.keymap.set('n', 'N', 'Nzzzv', { desc = 'Previous result' }) + +-- Move tabs with \[ and \] +vim.keymap.set('n', ']', ':tabnext', { desc = "Goto next tab", remap = true, silent = true }) +vim.keymap.set('n', '[', ':tabprev', { desc = "Goto previous tab", remap = true, silent = true}) +vim.keymap.set('n', 'tc', ':tabclose', { desc = "Tab [c]lose", remap = true, silent = true}) +vim.keymap.set('n', 'tn', ':tabnew', { desc = "Tab [n]ew", remap = true, silent = true}) + +-- Show all caracters +vim.keymap.set('n', 'l', ':set list!', { desc = "Show a[l]l caraters", remap = true, silent = true}) + +-- neotree +-- ------- +vim.keymap.set('n', 'nc', ':Neotree close', {desc='Neotree [c]lose'}) +vim.keymap.set('n', 'nf', ':Neotree focus filesystem', {desc='Neotree [f]ocus'}) +vim.keymap.set('n', 'nb', ':Neotree focus buffers', {desc='Neotree Nvim [b]uffers'}) +vim.keymap.set('n', 'ng', ':Neotree focus git_status', {desc='Neotree [g]it status'}) + +-- fzf-lua +-- ------ +vim.keymap.set('n', 'fb', function() require('fzf-lua').buffers() end, {desc='open [b]uffers'}) +vim.keymap.set('n', 'ff', function() require('fzf-lua').files() end, {desc='[r]esume last command'}) +vim.keymap.set('n', 'fr', function() require('fzf-lua').files() end, {desc='[f]iles'}) + +-- git related keymaps +vim.keymap.set('n', 'fgb', function() require('fzf-lua').git_branches() end, {desc='Git [b]ranches'}) +vim.keymap.set('n', 'fgc', function() require('fzf-lua').git_commits() end, {desc='Git [c]ommits'}) +vim.keymap.set('n', 'fgC', function() require('fzf-lua').git_bcommits() end, {desc='Git current buffer [C]ommits'}) +vim.keymap.set('n', 'fgf', function() require('fzf-lua').git_files() end, {desc='Git [f]iles'}) +vim.keymap.set('n', 'fgs', function() require('fzf-lua').git_stash() end, {desc='Git [s]tash'}) +vim.keymap.set('n', 'fgS', function() require('fzf-lua').git_status() end, {desc='Git [S]tash'}) + +-- grep related keymaps +vim.keymap.set('n', 'fGb', function() require('fzf-lua').grep_curbuf() end, {desc='grep in current [b]uffer'}) +vim.keymap.set('n', 'fGc', function() require('fzf-lua').grep_cword() end, {desc='grep word under the [c]ursor'}) +vim.keymap.set('n', 'fGg', function() require('fzf-lua').grep() end, {desc='[g]rep'}) +vim.keymap.set('n', 'fGl', function() require('fzf-lua').live_grep() end, {desc='[l]ive grep'}) +vim.keymap.set('n', 'fGr', function() require('fzf-lua').grep_last() end, {desc='[r]erun last grep'}) diff --git a/modules/home-manager/cli/neovim/files/lsp.lua b/modules/home-manager/cli/neovim/files/lsp.lua new file mode 100644 index 0000000..4b2a932 --- /dev/null +++ b/modules/home-manager/cli/neovim/files/lsp.lua @@ -0,0 +1,9 @@ +-- LSP configuration +vim.lsp.enable('bash') +vim.lsp.enable('helm') +vim.lsp.enable('lua') +vim.lsp.enable('nills') +vim.lsp.enable('pylsp') +vim.lsp.enable('terraformls') +vim.lsp.enable('tflint') +vim.lsp.enable('yaml') diff --git a/modules/home-manager/cli/neovim/files/neotree.lua b/modules/home-manager/cli/neovim/files/neotree.lua index c252b7f..d1fd640 100644 --- a/modules/home-manager/cli/neovim/files/neotree.lua +++ b/modules/home-manager/cli/neovim/files/neotree.lua @@ -3,14 +3,14 @@ neotree.setup({ close_if_last_window = true, filesystem = { filtered_items = { - -- when true, they will just be displayed differently + -- when true, they will just be displayed differently -- than normal items visible = false, hide_dotfiles = false, hide_gitignored = true, }, follow_current_file = { - -- follow file in current buffer even iof the file is + -- follow file in current buffer even iof the file is -- loaded while tree is open enabled = true, -- do not autoclose expanded dirs @@ -18,8 +18,3 @@ neotree.setup({ }, } }) - -vim.keymap.set('n', 'nc', ':Neotree close', {desc='Neotree [c]lose'}) -vim.keymap.set('n', 'nf', ':Neotree focus filesystem', {desc='Neotree [f]ocus'}) -vim.keymap.set('n', 'nb', ':Neotree focus buffers', {desc='Neotree Nvim [b]uffers'}) -vim.keymap.set('n', 'ng', ':Neotree focus git_status', {desc='Neotree [g]it status'}) diff --git a/modules/home-manager/cli/neovim/files/options.lua b/modules/home-manager/cli/neovim/files/options.lua index 0c75a47..bee83db 100644 --- a/modules/home-manager/cli/neovim/files/options.lua +++ b/modules/home-manager/cli/neovim/files/options.lua @@ -133,13 +133,3 @@ vim.diagnostic.config({ -- current_line = true, -- }, }) - --- LSP configuration -vim.lsp.enable('bash') -vim.lsp.enable('helm') -vim.lsp.enable('lua') -vim.lsp.enable('nills') -vim.lsp.enable('pylsp') -vim.lsp.enable('terraformls') -vim.lsp.enable('tflint') -vim.lsp.enable('yaml')