init.vim (5601B)
1 let mapleader ="," 2 3 if ! filereadable(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim"')) 4 echo "Downloading junegunn/vim-plug to manage plugins..." 5 silent !mkdir -p ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/ 6 silent !curl "https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim" > ${XDG_CONFIG_HOME:-$HOME/.config}/nvim/autoload/plug.vim 7 autocmd VimEnter * PlugInstall 8 endif 9 10 map ,, :keepp /<++><CR>ca< 11 imap ,, <esc>:keepp /<++><CR>ca< 12 13 call plug#begin(system('echo -n "${XDG_CONFIG_HOME:-$HOME/.config}/nvim/plugged"')) 14 Plug 'tpope/vim-surround' 15 Plug 'preservim/nerdtree' 16 Plug 'junegunn/goyo.vim' 17 Plug 'jreybert/vimagit' 18 Plug 'vimwiki/vimwiki' 19 Plug 'vim-airline/vim-airline' 20 Plug 'tpope/vim-commentary' 21 Plug 'ap/vim-css-color' 22 call plug#end() 23 24 set title 25 set bg=light 26 set go=a 27 set mouse=a 28 set nohlsearch 29 set clipboard+=unnamedplus 30 set noshowmode 31 set noruler 32 set laststatus=0 33 set noshowcmd 34 colorscheme vim 35 36 " Some basics: 37 nnoremap c "_c 38 filetype plugin on 39 syntax on 40 set encoding=utf-8 41 set number relativenumber 42 " Enable autocompletion: 43 set wildmode=longest,list,full 44 " Disables automatic commenting on newline: 45 autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o 46 " Perform dot commands over visual blocks: 47 vnoremap . :normal .<CR> 48 " Goyo plugin makes text more readable when writing prose: 49 map <leader>f :Goyo \| set bg=light \| set linebreak<CR> 50 " Spell-check set to <leader>o, 'o' for 'orthography': 51 map <leader>o :setlocal spell! spelllang=en_us<CR> 52 " Splits open at the bottom and right, which is non-retarded, unlike vim defaults. 53 set splitbelow splitright 54 55 " Nerd tree 56 map <leader>n :NERDTreeToggle<CR> 57 autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif 58 let NERDTreeBookmarksFile = stdpath('data') . '/NERDTreeBookmarks' 59 60 " vim-airline 61 if !exists('g:airline_symbols') 62 let g:airline_symbols = {} 63 endif 64 let g:airline_symbols.colnr = ' C:' 65 let g:airline_symbols.linenr = ' L:' 66 let g:airline_symbols.maxlinenr = '☰ ' 67 68 " Shortcutting split navigation, saving a keypress: 69 map <C-h> <C-w>h 70 map <C-j> <C-w>j 71 map <C-k> <C-w>k 72 map <C-l> <C-w>l 73 74 " Replace ex mode with gq 75 map Q gq 76 77 " Check file in shellcheck: 78 map <leader>s :!clear && shellcheck -x %<CR> 79 80 " Open my bibliography file in split 81 map <leader>b :vsp<space>$BIB<CR> 82 map <leader>r :vsp<space>$REFER<CR> 83 84 " Replace all is aliased to S. 85 nnoremap S :%s//g<Left><Left> 86 87 " Compile document, be it groff/LaTeX/markdown/etc. 88 map <leader>c :w! \| !compiler "%:p"<CR> 89 90 " Open corresponding .pdf/.htm or preview 91 map <leader>p :!opout "%:p"<CR> 92 93 " Runs a script that cleans out tex build files whenever I close out of a .tex file. 94 autocmd VimLeave *.tex !texclear % 95 96 " Ensure files are read as what I want: 97 let g:vimwiki_ext2syntax = {'.Rmd': 'markdown', '.rmd': 'markdown','.md': 'markdown', '.markdown': 'markdown', '.mdown': 'markdown'} 98 map <leader>v :VimwikiIndex<CR> 99 let g:vimwiki_list = [{'path': '~/.local/share/nvim/vimwiki', 'syntax': 'markdown', 'ext': '.md'}] 100 autocmd BufRead,BufNewFile /tmp/calcurse*,~/.calcurse/notes/* set filetype=markdown 101 autocmd BufRead,BufNewFile *.ms,*.me,*.mom,*.man set filetype=groff 102 autocmd BufRead,BufNewFile *.tex set filetype=tex 103 104 " Save file as sudo on files that require root permission 105 cabbrev w!! execute 'silent! write !sudo tee % >/dev/null' <bar> edit! 106 107 " Enable Goyo by default for mutt writing 108 autocmd BufRead,BufNewFile /tmp/neomutt* :Goyo 80 | call feedkeys("jk") 109 autocmd BufRead,BufNewFile /tmp/neomutt* map ZZ :Goyo!\|x!<CR> 110 autocmd BufRead,BufNewFile /tmp/neomutt* map ZQ :Goyo!\|q!<CR> 111 112 " Automatically deletes all trailing whitespace and newlines at end of file on save. & reset cursor position 113 autocmd BufWritePre * let currPos = getpos(".") 114 autocmd BufWritePre * %s/\s\+$//e 115 autocmd BufWritePre * %s/\n\+\%$//e 116 autocmd BufWritePre *.[ch] %s/\%$/\r/e " add trailing newline for ANSI C standard 117 autocmd BufWritePre *neomutt* %s/^--$/-- /e " dash-dash-space signature delimiter in emails 118 autocmd BufWritePre * cal cursor(currPos[1], currPos[2]) 119 120 " When shortcut files are updated, renew bash and ranger configs with new material: 121 autocmd BufWritePost bm-files,bm-dirs !shortcuts 122 " Run xrdb whenever Xdefaults or Xresources are updated. 123 autocmd BufRead,BufNewFile Xresources,Xdefaults,xresources,xdefaults set filetype=xdefaults 124 autocmd BufWritePost Xresources,Xdefaults,xresources,xdefaults !xrdb % 125 " Recompile dwmblocks on config edit. 126 autocmd BufWritePost ~/.local/src/dwmblocks/config.h !cd ~/.local/src/dwmblocks/; sudo make install && { killall -q dwmblocks;setsid -f dwmblocks } 127 128 " Turns off highlighting on the bits of code that are changed, so the line that is changed is highlighted but the actual text that has changed stands out on the line and is readable. 129 if &diff 130 highlight! link DiffText MatchParen 131 endif 132 133 " Function for toggling the bottom statusbar: 134 let s:hidden_all = 0 135 function! ToggleHiddenAll() 136 if s:hidden_all == 0 137 let s:hidden_all = 1 138 set noshowmode 139 set noruler 140 set laststatus=0 141 set noshowcmd 142 else 143 let s:hidden_all = 0 144 set showmode 145 set ruler 146 set laststatus=2 147 set showcmd 148 endif 149 endfunction 150 nnoremap <leader>h :call ToggleHiddenAll()<CR> 151 " Load command shortcuts generated from bm-dirs and bm-files via shortcuts script. 152 " Here leader is ";". 153 " So ":vs ;cfz" will expand into ":vs /home/<user>/.config/zsh/.zshrc" 154 " if typed fast without the timeout. 155 silent! source ~/.config/nvim/shortcuts.vim