vimrc (4408B)
1 exe "set runtimepath=~/.vim," . $VIMRUNTIME 2 3 filetype plugin on 4 syntax on 5 6 set autoindent 7 set backspace=indent,eol,start 8 set backupcopy=yes 9 set cursorline 10 set formatoptions=qrn 11 set hlsearch 12 set ignorecase 13 set incsearch 14 set linebreak 15 set nofoldenable 16 set nojoinspaces 17 set nowrap 18 set number 19 set relativenumber 20 set scrolloff=15 21 set shiftround 22 set shiftwidth=4 23 set shortmess=aoOtI 24 set smartcase 25 set synmaxcol=1000 26 set viminfo='20,<1000,s1000 27 set ruler 28 set mouse="" 29 30 let mapleader = "\<Space>" 31 nnoremap <Leader>w :w<CR> 32 nnoremap <silent> <leader>n :setlocal paste<CR> 33 nnoremap <silent> <leader>q :%s/\s\+$//e<CR><C-o> 34 nnoremap <silent> / :let @/ = ""<CR>:set hlsearch<CR>/ 35 nnoremap <silent> H :set hlsearch!<CR> 36 37 highlight TrailingWhitespace ctermbg=black 38 call matchadd('TrailingWhitespace', '\s\+$') 39 40 highlight Normal ctermbg=none 41 highlight MatchParen ctermbg=darkmagenta ctermfg=black 42 43 command FixFile :set fileencoding=utf-8 fileformat=unix nobomb | %s/\r$// 44 45 " Do not enter ex mode when I fat finger q with shift pressed 46 nnoremap Q <nop> 47 48 " Do not show me man pages when I'm bad at pressing k 49 nnoremap K <nop> 50 51 " I'm very bad at pressing things 52 " nmap <F1> <nop> 53 nmap <F1> :echo<CR> 54 imap <F1> <C-o>:echo<CR> 55 56 " Do not show command history window when :q gets entered in the wrong order 57 map q: :q 58 59 " When joining, do the right thing to join up function definitions 60 vnoremap J J:s/( /(/g<CR>:s/,)/)/g<CR> 61 62 " Quickly move around (and into) command mode 63 " imap jk <Esc> 64 " imap kj <Esc>: 65 for keymode in ['n', 'v'] 66 exec keymode . 'noremap ; :' 67 exec keymode . 'noremap : ;' 68 endfor 69 70 " Do not copy to default register on delete/change, use <Leader> prefixed 71 " version to use regular delete/change 72 for key in ['d', 'D', 'c', 'C'] 73 for keymode in ['n', 'v'] 74 exe keymode . 'noremap <Leader>' . key . ' ' . key 75 exe keymode . 'noremap ' . key . ' "_' . key 76 endfor 77 endfor 78 79 " gV to highlight previously inserted text 80 nnoremap gV `[v`] 81 82 " Automatically move to end of paste 83 vnoremap <silent> y y`] 84 vnoremap <silent> p p`] 85 nnoremap <silent> p p`] 86 87 " I only really use a single mark, so M to set it, m to retrieve it 88 nnoremap M mA 89 nnoremap m 'A 90 91 augroup filetype_settings 92 " Clear this autocmd group so that the settings won't get loaded over and 93 " over again 94 autocmd! 95 96 autocmd BufNewFile,BufReadPost *.cconf,*.cinc,TARGETS setlocal filetype=python 97 autocmd BufNewFile,BufReadPost *.lalrpop setlocal filetype=rust 98 autocmd BufNewFile,BufReadPost *.def setlocal filetype=c 99 autocmd BufNewFile,BufReadPost *.bb setlocal filetype=clojure 100 101 for filetype in ['yaml', 'sql', 'ruby', 'html', 'css', 'xml', 'vim'] 102 exe 'autocmd FileType ' . filetype . ' setlocal sw=2 sts=2 ts=2' 103 endfor 104 105 for filetype in ['gitcommit'] 106 exe 'autocmd FileType ' . filetype . ' setlocal joinspaces' 107 endfor 108 109 for filetype in ['gitcommit'] 110 exe 'autocmd FileType ' . filetype . ' setlocal tw=72' 111 endfor 112 113 autocmd BufRead,BufNewFile */linux-mmots/*.c,*/linux-mmots/*.h setlocal textwidth=80 114 autocmd BufRead,BufNewFile */systemd/*.c,*/systemd/*.h setlocal textwidth=109 115 116 augroup END 117 118 nnoremap <C-l> <C-l>zz 119 120 augroup modechange_settings 121 autocmd! 122 123 " Clear search context when entering insert mode, which implicitly stops the 124 " highlighting of whatever was searched for with hlsearch on. It should also 125 " not be persisted between sessions. 126 autocmd InsertEnter * let @/ = '' 127 autocmd BufReadPre,FileReadPre * let @/ = '' 128 129 autocmd InsertLeave * setlocal nopaste 130 131 " Jump to last position in file 132 autocmd BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g'\"" | endif 133 134 " Balance splits on window resize 135 autocmd VimResized * wincmd = 136 augroup END 137 138 139 " Do not overwrite default register when pasting in visual mode 140 function! RestoreRegister() 141 let @" = s:restore_reg 142 return '' 143 endfunction 144 function! s:Repl() 145 let s:restore_reg = @" 146 return "p@=RestoreRegister()\<cr>" 147 endfunction 148 vmap <silent> <expr> p <sid>Repl() 149 150 " Stuff to make working with unwrapped text easier 151 for key in ['k', 'j'] 152 exe 'noremap <buffer> <silent> <expr> ' . key . ' v:count ? ''' . key . ''' : ''g' . key . '''' 153 exe 'onoremap <silent> <expr> ' . key . ' v:count ? ''' . key . ''' : ''g' . key . '''' 154 endfor 155 nnoremap <silent> <Leader>E :set wrap<CR>:setlocal formatoptions-=t<CR>:set textwidth=0<CR> 156 nnoremap <silent> <Leader>e :set nowrap<CR>:setlocal formatoptions+=t<CR>:set textwidth=79<CR>