nixos-config/users/rouven/modules/neovim/default.nix

100 lines
2.4 KiB
Nix

{ config, pkgs, ... }:
{
programs.neovim = {
enable = true;
# defaultEditor = true; why the hell doesn't this work :(
vimAlias = true;
plugins = with pkgs.vimPlugins; [
nerdtree
nerdcommenter
fugitive-gitlab-vim
vim-repeat
vim-airline
fzf-vim
dracula-vim
vim-nix # this destroys my tab settings, ffs
];
extraConfig =
''
" basic commands bound to uppercase key
command Q q
command W w
command Wq wq
command WQ wq
set shiftwidth=4
set noexpandtab
set preserveindent
set number relativenumber
set tabstop=4
set smartcase
set colorcolumn=120
set nowrap
highlight ColorColumn ctermbg=darkgray
" beautify indents
:set list lcs=tab:\|\
nnoremap ; :
nnoremap : ;
vnoremap ; :
vnoremap : ;
" set space as leader
nnoremap <SPACE> <Nop>
let mapleader = " "
" air-line
let g:airline_powerline_fonts = 1
" NERDTree
nnoremap <leader>n :NERDTreeFocus<CR> :NERDTreeRefreshRoot<CR>
" NERDTree autostart"
autocmd VimEnter * NERDTree | wincmd p
" Close the tab if NERDTree is the only window remaining in it.
autocmd BufEnter * if winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif
"remove ex-mode shortcut
nmap Q <Nop>
" trigger the fuzzy finder (fzf)
nnoremap <leader>f :Files<CR>
nnoremap <leader>g :GFiles<CR>
nnoremap <leader>b :Buffers<CR>
nnoremap <leader>r :Rg<CR>
" keybinds for coc
nnoremap <leader>d :CocDiagnostics<CR>
" quickfixlist binds
nnoremap <C-j> :cnext<CR>
nnoremap <C-k> :cprev<CR>
" locallist binds
nnoremap <C-l> :lnext<CR>
nnoremap <C-h> :lprev<CR>
" split keybinds
nnoremap <leader>s :sp<CR>
nnoremap <leader>v :vs<CR>
nnoremap <leader>h <C-w>h
nnoremap <leader>j <C-w>j
nnoremap <leader>k <C-w>k
nnoremap <leader>l <C-w>l
" coloring stuff
let g:dracula_colorterm = 0
colorscheme dracula
" better autocompletion menu colors
highlight Pmenu ctermbg=darkgray ctermfg=black
highlight PmenuSel ctermbg=gray ctermfg=black
'';
};
}