{ pkgs, ... }: { programs.neovim = { enable = true; vimdiffAlias = true; withNodeJs = true; plugins = with pkgs.vimPlugins; [ { plugin = coc-nvim; config = '' nmap (coc-rename) inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" " Remap and for scroll float windows/popups. if has('nvim-0.4.0') || has('patch-8.2.0750') nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" endif ''; } fzf-vim { plugin = iceberg-vim; config = "colorscheme iceberg"; } vim-sleuth coc-json coc-html coc-tsserver neoformat undotree { plugin = vim-jsdoc; config = '' let g:jsdoc_formatter = "tsdoc" let g:typescript_indent_disable = 1 ''; } ]; extraConfig = '' set background=dark set termguicolors set ic set number set autoindent set completeopt=menuone,noinsert,noselect set shortmess+=c ''; }; }