dotfiles

Torpy's handcrafted dootfiles.
Log | Files | Refs | README

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