From 1d7618ea4df39231ddc1d2487b0056809a052c36 Mon Sep 17 00:00:00 2001 From: Shubham Saini Date: Tue, 3 Oct 2023 23:59:48 -0700 Subject: nvim: update config --- hosts/morpheus/home.nix | 4 +- modules/init.vim | 169 ++++++++++++++++++++++++++++++++++++++++++++++++ modules/neovim.nix | 34 ++++++++++ 3 files changed, 206 insertions(+), 1 deletion(-) create mode 100644 modules/init.vim create mode 100644 modules/neovim.nix diff --git a/hosts/morpheus/home.nix b/hosts/morpheus/home.nix index e1647cc..2eb9c55 100644 --- a/hosts/morpheus/home.nix +++ b/hosts/morpheus/home.nix @@ -17,8 +17,8 @@ pass tmux fzf + jq docker - neovim nmap lf pinentry_mac @@ -32,6 +32,7 @@ k9s kubernetes-helm python38 + awscli # gui zoom-us slack @@ -47,5 +48,6 @@ imports = [ ../../modules/common.nix + ../../modules/neovim.nix ]; } diff --git a/modules/init.vim b/modules/init.vim new file mode 100644 index 0000000..99b1938 --- /dev/null +++ b/modules/init.vim @@ -0,0 +1,169 @@ +let &t_ZM = "\e[3m" + +" augroups + +augroup plaintext + autocmd! + autocmd FileType text,markdown setlocal ts=2 sts=2 sw=2 expandtab textwidth=60 +augroup END + +augroup webdev + autocmd! + autocmd FileType less,css,html,js?,ts? setlocal ts=2 sts=2 sw=2 expandtab + autocmd FileType less,css,html nnoremap s viB:sort +augroup END + +augroup lisp_stuff + autocmd! + autocmd BufReadPost *.lisp set filetype=scheme +augroup END + +augroup yankhl + autocmd! + autocmd TextYankPost * silent! lua require'vim.highlight'.on_yank() +augroup END + +augroup restorecursor + autocmd BufReadPost * + \ if line("'\"") > 1 && line("'\"") <= line("$") | + \ execute "normal! g`\"" | + \ endif +augroup END + +augroup fzfstatus + if has('nvim') && !exists('g:fzf_layout') + autocmd! FileType fzf + autocmd FileType fzf set laststatus=0 noshowmode noruler + \| autocmd BufLeave set laststatus=2 showmode ruler + endif +augroup END + +" general settings +set nobackup +set nowritebackup +set noswapfile " get rid of swapfiles everywhere +set dir=/tmp + +syntax on + +set omnifunc=syntaxcomplete#Complete +set completefunc=LanguageClient#complete +set list +filetype off +filetype plugin indent on +set laststatus=2 +set nowrap +set noshowmode +set listchars=tab:┊\ ,nbsp:␣,trail:·,extends:>,precedes:< +set fillchars=vert:\│,stl:\ ,stlnc:\ +set ignorecase +set smartcase +set sidescroll=40 +set incsearch +set hlsearch +set undofile +set undodir=~/tmp +set path+=** +set backspace=indent,eol,start +set hidden +set wildmenu +set complete=.,w,b,i,u,t, +set background=dark +set mouse=a +set conceallevel=0 +set nonumber +set grepprg=rg\ --vimgrep\ --no-heading +set grepformat=%f:%l:%c:%m,%f:%l:%m +set cmdheight=2 +set shortmess+=c +set updatetime=300 +set signcolumn=yes +set inccommand=split +set showmatch +set diffopt+=vertical +set completeopt=menu,menuone,noselect +set exrc + +let g:netrw_browsex_viewer= "xdg-open" + +colorscheme plain + +set shiftwidth=4 " indent = 4 spaces +set expandtab +set tabstop=4 " tab = 4 spaces +set softtabstop=4 " backspace through spaces + +" Functions +function! GetTabber() " a lil function that integrates well with Tabular.vim + let c = nr2char(getchar()) + :execute 'Tabularize /' . c +endfunction + +" Ugh +command! WQ wq +command! Wq wq +command! Wqa wqa +command! WQa wqa +command! W w +command! Q q + +" abbreviations +abclear +iab #i #include +iab #d #define +cab dst put =strftime('%d %a, %b %Y') +cab vg vimgrep +cab vga vimgrepadd +cab bfd bufdo + +" man pages +let g:ft_man_open_mode = 'tab' + +let g:gitgutter_override_sign_column_highlight = 0 +let g:gitgutter_sign_added = '+' +let g:gitgutter_sign_modified = '~' +let g:gitgutter_sign_removed = '-' +let g:gitgutter_sign_removed_first_line = '-' +let g:gitgutter_sign_modified_removed = '~' + +let g:fzf_colors = + \ { 'fg': ['fg', 'Noise'], + \ 'bg': ['bg', 'Noise'], + \ 'hl': ['fg', 'Statement'], + \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], + \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], + \ 'hl+': ['fg', 'Statement'], + \ 'info': ['fg', 'PreProc'], + \ 'border': ['fg', 'Ignore'], + \ 'prompt': ['fg', 'Conditional'], + \ 'pointer': ['fg', 'Exception'], + \ 'marker': ['fg', 'Keyword'], + \ 'spinner': ['fg', 'Label'], + \ 'header': ['fg', 'Comment'] } +let g:fzf_layout = { 'down': '40%' } +let g:fzf_preview_window = [] + +highlight GitGutterAdd ctermfg=8 +highlight GitGutterChange ctermfg=8 +highlight GitGutterDelete ctermfg=8 + +let g:rustfmt_autosave = 1 + +let g:latex_view_general_viewer = "zathura" +let g:vimtex_view_method = "zathura" +let g:tex_flavor = 'latex' + +let g:elm_setup_keybindings = 0 + +sign define LspDiagnosticsSignError text=× texthl=LspDiagnosticsSignError linehl= numhl= +sign define LspDiagnosticsSignWarning text=\! texthl=LspDiagnosticsSignWarning linehl= numhl= +sign define LspDiagnosticsSignInformation text=i texthl=LspDiagnosticsSignInformation linehl= numhl= +sign define LspDiagnosticsSignHint text=\~ texthl=LspDiagnosticsSignHint linehl= numhl= + +let g:user_emmet_leader_key='' + +lua << EOF +require 'lspconfig' +require 'treesitter' +require 'completions' +EOF diff --git a/modules/neovim.nix b/modules/neovim.nix new file mode 100644 index 0000000..1897223 --- /dev/null +++ b/modules/neovim.nix @@ -0,0 +1,34 @@ +{ config, pkgs, ... }: + +{ + programs.neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + vimdiffAlias = true; + extraConfig = builtins.readFile ./init.vim; + plugins = with pkgs.vimPlugins; [ + # lsp + nvim-lspconfig + nvim-cmp + (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) + # autocompletion + cmp-nvim-lsp + cmp-buffer + cmp-path + cmp-cmdline + # tpope + vim-surround + vim-fugitive + # syntax + vim-nix + vimtex + # others + vim-gitgutter + tabular + vimwiki + fzf-vim + ]; + }; +} -- cgit v1.2.3