# # Neovim # { pkgs, ... }: { home = { packages = [ pkgs.gnvim ]; }; programs = { neovim = { enable = true; viAlias = true; vimAlias = true; vimdiffAlias = true; withNodeJs = true; # plugins = with pkgs.vimPlugins; [ # # # Syntax # #vim-nix # #vim-markdown # # # Quality of life # vim-lastplace # Opens document where you left it # auto-pairs # Print double quotes/brackets/etc. # vim-gitgutter # See uncommitted changes of file :GitGutterEnable # # # File Tree # nerdtree # File Manager - set in extraConfig to F6 # # # Customization # wombat256-vim # Color scheme for lightline # srcery-vim # Color scheme for text # # lightline-vim # Info bar at bottom # indent-blankline-nvim # Indentation lines # # # Syntax # nvim-treesitter.withAllGrammars # # finder # telescope-nvim # # completion # nvim-cmp # # status line # lualine-nvim # # indent # indent-blankline-nvim # ]; extraPackages = with pkgs; [ ripgrep fd nodejs nodePackages.npm ]; # extraConfig = '' # set expandtab # set shiftwidth=4 # set tabstop=4 # ''; # extraLuaConfig = '' # vim.g.mapleader = ' ' # vim.g.maplocalleader = ' ' # # -- Set highlight on search # vim.o.hlsearch = false # # -- Make line numbers default # vim.wo.number = true # # -- Enable mouse mode # vim.o.mouse = 'a' # # -- Sync clipboard between OS and Neovim. # -- Remove this option if you want your OS clipboard to remain independent. # -- See `:help 'clipboard'` # vim.o.clipboard = 'unnamedplus' # # -- Enable break indent # vim.o.breakindent = true # # -- Save undo history # vim.o.undofile = true # # -- Case insensitive searching UNLESS /C or capital in search # vim.o.ignorecase = true # vim.o.smartcase = true # # -- Keep signcolumn on by default # vim.wo.signcolumn = 'yes' # # -- Decrease update time # vim.o.updatetime = 250 # vim.o.timeout = true # vim.o.timeoutlen = 300 # # -- Set completeopt to have a better completion experience # vim.o.completeopt = 'menuone,noselect' # # -- NOTE: You should make sure your terminal supports this # vim.o.termguicolors = true # # -- [[ Highlight on yank ]] # -- See `:help vim.highlight.on_yank()` # local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) # vim.api.nvim_create_autocmd('TextYankPost', { # callback = function() # vim.highlight.on_yank() # end, # group = highlight_group, # pattern = '*', # }) # # -- [[ Configure Telescope ]] # -- See `:help telescope` and `:help telescope.setup()` # require('telescope').setup { # defaults = { # mappings = { # i = { # [''] = false, # [''] = false, # }, # }, # }, # } # # -- Enable telescope fzf native, if installed # pcall(require('telescope').load_extension, 'fzf') # # -- See `:help telescope.builtin` # vim.keymap.set('n', '?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' }) # vim.keymap.set('n', '', require('telescope.builtin').buffers, { desc = '[ ] Find existing buffers' }) # vim.keymap.set('n', '/', function() # -- You can pass additional configuration to telescope to change theme, layout, etc. # require('telescope.builtin').current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { # winblend = 10, # previewer = false, # }) # end, { desc = '[/] Fuzzily search in current buffer' }) # # vim.keymap.set('n', 'gf', require('telescope.builtin').git_files, { desc = 'Search [G]it [F]iles' }) # vim.keymap.set('n', 'sf', require('telescope.builtin').find_files, { desc = '[S]earch [F]iles' }) # vim.keymap.set('n', 'sh', require('telescope.builtin').help_tags, { desc = '[S]earch [H]elp' }) # vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { desc = '[S]earch current [W]ord' }) # vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) # vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) # require("indent_blankline").setup { # -- for example, context is off by default, use this to turn it on # show_current_context = true, # show_current_context_start = true, # } # ''; }; }; }