diff options
| -rw-r--r-- | doc/shortcuts.txt | 27 | ||||
| -rw-r--r-- | vimrc | 135 |
2 files changed, 136 insertions, 26 deletions
diff --git a/doc/shortcuts.txt b/doc/shortcuts.txt index c85b640..fd21674 100644 --- a/doc/shortcuts.txt +++ b/doc/shortcuts.txt | |||
| @@ -52,6 +52,16 @@ qa = start (q) macro recording in register a (can be anything) | |||
| 52 | q = stop macro recording | 52 | q = stop macro recording |
| 53 | @a = replay macro a | 53 | @a = replay macro a |
| 54 | :'<,'>normal @a = apply a to every line in the current selection | 54 | :'<,'>normal @a = apply a to every line in the current selection |
| 55 | :reg = lists all registers (including those with macros in them) | ||
| 56 | |||
| 57 | [registers] | ||
| 58 | notice, that registers get used for both: macro recordings and copying text | ||
| 59 | |||
| 60 | :reg = shows contents of all registers | ||
| 61 | "0p = pasts from register 0, which is the same as "", but not overwritten by dd | ||
| 62 | "ap = same for register a | ||
| 63 | "0yy = yanks to register 0 (same as y by itself) | ||
| 64 | "ay = yanks current selection to register a (in visual mode) | ||
| 55 | 65 | ||
| 56 | 66 | ||
| 57 | [marker] | 67 | [marker] |
| @@ -90,7 +100,22 @@ z= = show spellcheck suggestions | |||
| 90 | 100 | ||
| 91 | [special] | 101 | [special] |
| 92 | g CTRL-g = display file properties including word and char count | 102 | g CTRL-g = display file properties including word and char count |
| 93 | CTRL-X CTRL-F = display file name completions using (vim-internal) omnicomplete | 103 | q: = show command history and use it like a normal buffer |
| 104 | |||
| 105 | |||
| 106 | [completions] | ||
| 107 | CTRL-O = display completions: omnicomplete (context dependant completions) | ||
| 108 | |||
| 109 | CTRL-X CTRL-F = display completions: file name (using vim-internals omnicomplete) | ||
| 110 | CTRL-N CTRL-P = display completions: file keywords | ||
| 111 | CTRL-K = display completions: dictionary | ||
| 112 | CTRL-T = display completions: thesaurus | ||
| 113 | CTRL-I = display completions: include files | ||
| 114 | CTRL-] = display completions: tags | ||
| 115 | CTRL-D = display completions: (marcro-) definitions | ||
| 116 | CTRL-V = display completions: vim command line | ||
| 117 | CTRL-U = display completions: user-defined | ||
| 118 | |||
| 94 | 119 | ||
| 95 | 120 | ||
| 96 | [netrw] | 121 | [netrw] |
| @@ -1,7 +1,14 @@ | |||
| 1 | " vim: textwidth=160 tabstop=2 shiftwidth=2 | ||
| 2 | " | ||
| 3 | if has('nvim') | ||
| 4 | runtime! python_setup.vim | ||
| 5 | endif | ||
| 6 | |||
| 1 | call plug#begin() | 7 | call plug#begin() |
| 2 | 8 | ||
| 9 | |||
| 3 | " Brilliant_Plugins_by_tpope: ========================. | 10 | " Brilliant_Plugins_by_tpope: ========================. |
| 4 | Plug 'tpope/vim-sensible' | " a sane and modern default configuration | 11 | " Plug 'tpope/vim-sensible' | " a sane and modern default configuration # not required with nvim |
| 5 | Plug 'tpope/vim-surround' | " plugin makes cs"' inside a line replace " with ' | 12 | Plug 'tpope/vim-surround' | " plugin makes cs"' inside a line replace " with ' |
| 6 | Plug 'tpope/vim-fugitive' | " the most complete GIT integration plugin | 13 | Plug 'tpope/vim-fugitive' | " the most complete GIT integration plugin |
| 7 | Plug 'godlygeek/tabular' | " align code on a sign, like :Tab/= | 14 | Plug 'godlygeek/tabular' | " align code on a sign, like :Tab/= |
| @@ -9,17 +16,30 @@ Plug 'mhinz/vim-signify' | " show changes in the cl | |||
| 9 | 16 | ||
| 10 | 17 | ||
| 11 | " Colorschemes: ======================================. | 18 | " Colorschemes: ======================================. |
| 19 | Plug 'ryanoasis/vim-devicons' | " eye candy icons | ||
| 12 | Plug 'chriskempson/base16-vim' | " | 20 | Plug 'chriskempson/base16-vim' | " |
| 13 | map <leader>q :bp<bar>sp<bar>bn<bar>bd<CR>. | 21 | map <leader>q :bp<bar>sp<bar>bn<bar>bd<CR>. |
| 14 | 22 | ||
| 15 | 23 | ||
| 24 | " NETRW: =============================================. | ||
| 25 | let g:netrw_list_hide = '^\..*' | " Explore mode: hide files starting with dot | ||
| 26 | let g:netrw_hide = 1 | " show not-hidden files only | ||
| 27 | let g:netrw_liststyle = 3 | " 3=tree | ||
| 28 | let g:netrw_banner = 0 | " display help messages? | ||
| 29 | let g:netrw_winsize = 20 | " window size in percent | ||
| 30 | let g:netrw_fastbrowse = 2 | " manually refresh direcory list (avoids display errors) | ||
| 31 | let g:netrw_keepdir = 0 | ||
| 32 | let g:netrw_browse_split = 4 | " 4=open in previous window | ||
| 33 | let g:netrw_preview = 0 | " | ||
| 34 | let g:netrw_alto = 0 | " open files on the right | ||
| 35 | let g:netrw_altv = 1 | " open files on the right | ||
| 36 | |||
| 16 | " NERDTree: ==========================================. | 37 | " NERDTree: ==========================================. |
| 17 | Plug 'scrooloose/nerdtree' | " replace NetRW, which is kind of buggy | 38 | Plug 'scrooloose/nerdtree' | " replace NetRW, which is kind of buggy |
| 18 | let NERDTreeCascadeSingleChildDir = 0 | " I don't get how one can use <m> to create files in that included directory | 39 | let NERDTreeCascadeSingleChildDir = 0 | " I don't get how one can use <m> to create files in that included directory |
| 19 | set winwidth=30 " keep NERDTreeWindow at least this size | 40 | set winwidth=30 " keep NERDTreeWindow at least this size |
| 20 | set winminwidth=30 " (and all other windows, so TODO: watch out) | 41 | set winminwidth=30 " (and all other windows, so TODO: watch out) |
| 21 | 42 | ||
| 22 | autocmd BufEnter * lcd %:p:h | ||
| 23 | " depending on if NERDTree has the focus: | 43 | " depending on if NERDTree has the focus: |
| 24 | nnoremap <expr> | 44 | nnoremap <expr> |
| 25 | \ <leader><leader> | 45 | \ <leader><leader> |
| @@ -33,6 +53,9 @@ nnoremap <expr> | |||
| 33 | " close NERDTree if it is the last remaining window (taken from the official documentation) | 53 | " close NERDTree if it is the last remaining window (taken from the official documentation) |
| 34 | " autocmd bufenter * | 54 | " autocmd bufenter * |
| 35 | " \ if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif | 55 | " \ if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif |
| 56 | " | ||
| 57 | " exec current line as a command, insert output of command (from: https://youtu.be/MquaityA1SM?t=35m45s) | ||
| 58 | nnoremap Q !!$SHELL<CR> | ||
| 36 | 59 | ||
| 37 | 60 | ||
| 38 | " AIRLINE: ===========================================. | 61 | " AIRLINE: ===========================================. |
| @@ -86,20 +109,28 @@ let g:tagbar_foldlevel = 99 | |||
| 86 | nnoremap <leader>l :TagbarToggle<CR>| " bind TagBar to Hotkey Ctrl+L | 109 | nnoremap <leader>l :TagbarToggle<CR>| " bind TagBar to Hotkey Ctrl+L |
| 87 | 110 | ||
| 88 | 111 | ||
| 112 | |||
| 113 | |||
| 89 | " Autocompleter: =====================================. | 114 | " Autocompleter: =====================================. |
| 90 | Plug 'Valloric/MatchTagAlways' " highlights the closing tag/brace/... | 115 | Plug 'Valloric/MatchTagAlways' " highlights the closing tag/brace/... |
| 91 | Plug 'Valloric/YouCompleteMe' | 116 | Plug 'Valloric/YouCompleteMe' |
| 92 | let g:ycm_collect_identifiers_from_tags_files = 1 " Let YCM read tags from Ctags file | 117 | let g:ycm_collect_identifiers_from_tags_files = 1 " Let YCM read tags from Ctags file |
| 118 | let g:ycm_seed_identifiers_with_syntax = 1 " Completion for programming language's keyword | ||
| 93 | let g:ycm_complete_in_comments = 1 " Completion in comments | 119 | let g:ycm_complete_in_comments = 1 " Completion in comments |
| 94 | let g:ycm_complete_in_strings = 1 " Completion in string | 120 | let g:ycm_complete_in_strings = 1 " Completion in string |
| 95 | let g:ycm_error_symbol = '✖' " insert this as an error symbol in the gutter bar | 121 | let g:ycm_error_symbol = '✖' " insert this as an error symbol in the gutter bar |
| 96 | let g:ycm_min_num_of_chars_for_completion = 1 | 122 | let g:ycm_min_num_of_chars_for_completion = 1 |
| 97 | let g:ycm_seed_identifiers_with_syntax = 1 " Completion for programming language's keyword | ||
| 98 | let g:ycm_use_ultisnips_completer = 1 " Default 1, just ensure | 123 | let g:ycm_use_ultisnips_completer = 1 " Default 1, just ensure |
| 99 | let g:ycm_warning_symbol = '➔' " insert this as a warning symbol in the gutter bar | 124 | let g:ycm_warning_symbol = '➔' " insert this as a warning symbol in the gutter bar |
| 125 | let g:ycm_confirm_extra_conf = 0 " security is overrated | ||
| 126 | let g:ycm_key_list_select_completion = ['<Down>'] | ||
| 127 | let g:ycm_key_list_previous_completion = ['<Up>'] | ||
| 100 | " disable <tab>-key for YCM so that it can be used with ultisnips | 128 | " disable <tab>-key for YCM so that it can be used with ultisnips |
| 101 | " let g:ycm_key_list_select_completion=[] | 129 | " let g:ycm_key_list_select_completion=[] |
| 102 | " let g:ycm_key_list_previous_completion=[] | 130 | " let g:ycm_key_list_previous_completion=[] |
| 131 | Plug 'rdnetto/YCM-Generator' | ||
| 132 | |||
| 133 | " Plug 'ervandew/supertab' | ||
| 103 | 134 | ||
| 104 | 135 | ||
| 105 | Plug 'scrooloose/syntastic' | 136 | Plug 'scrooloose/syntastic' |
| @@ -136,10 +167,25 @@ Plug 'SirVer/ultisnips' " replaces loremipsum (and | |||
| 136 | "let g:UltiSnipsJumpForwardTrigger = '<C-j>'| " \ | 167 | "let g:UltiSnipsJumpForwardTrigger = '<C-j>'| " \ |
| 137 | "let g:UltiSnipsJumpBackwardTrigger = '<C-k>'| " \ | 168 | "let g:UltiSnipsJumpBackwardTrigger = '<C-k>'| " \ |
| 138 | "let g:UltiSnipsListSnippets = '<C-`>'| " YouCompleteMe includes those, so this isn't necessary | 169 | "let g:UltiSnipsListSnippets = '<C-`>'| " YouCompleteMe includes those, so this isn't necessary |
| 139 | let g:UltiSnipsExpandTrigger = '<leader><tab>'| " Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe. | 170 | " let g:UltiSnipsExpandTrigger = '<leader><tab>'| " Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe. |
| 140 | let g:UltiSnipsJumpForwardTrigger = '<PageDown>'| " \ | 171 | " let g:UltiSnipsJumpForwardTrigger = '<PageDown>'| " \ |
| 141 | let g:UltiSnipsJumpBackwardTrigger = '<PageUp>'| " \ | 172 | " let g:UltiSnipsJumpBackwardTrigger = '<PageUp>'| " \ |
| 142 | let g:UltiSnipsListSnippets = '<leader><leader>'| " YouCompleteMe includes those, so this isn't necessary | 173 | " let g:UltiSnipsListSnippets = '<leader><leader>'| " YouCompleteMe includes those, so this isn't necessary |
| 174 | |||
| 175 | " UltiSnips triggering | ||
| 176 | " let g:UltiSnipsExpandTrigger = "<nop>" | ||
| 177 | " let g:ulti_expand_or_jump_res = 0 | ||
| 178 | " function ExpandSnippetOrCarriageReturn() | ||
| 179 | " let snippet = UltiSnips#ExpandSnippetOrJump() | ||
| 180 | " if g:ulti_expand_or_jump_res > 0 | ||
| 181 | " return snippet | ||
| 182 | " else | ||
| 183 | " return "\<CR>" | ||
| 184 | " endif | ||
| 185 | " endfunction | ||
| 186 | " inoremap <expr> <CR> pumvisible() ? "\<C-R>=ExpandSnippetOrCarriageReturn()\<CR>" : "\<CR>" | ||
| 187 | " set completeopt-=preview | ||
| 188 | |||
| 143 | " let g:UltiSnipsEditSplit = 'vertical' | 189 | " let g:UltiSnipsEditSplit = 'vertical' |
| 144 | 190 | ||
| 145 | 191 | ||
| @@ -172,9 +218,25 @@ inoremap | |||
| 172 | 218 | ||
| 173 | noremap <silent> <F5> :make<CR> | 219 | noremap <silent> <F5> :make<CR> |
| 174 | 220 | ||
| 221 | " default copy&paste insert key binding (just in insert mode, so it doesn't conflict | ||
| 222 | " with visual block mode). | ||
| 223 | inoremap <C-V> <C-R>+ | ||
| 224 | inoremap <C-S> <C-O>:w<CR> | ||
| 225 | |||
| 226 | |||
| 227 | |||
| 228 | |||
| 229 | " spell checkers? | ||
| 230 | set spell spelllang=en,de | " enable spell checker | ||
| 231 | set dictionary=/usr/share/dict/cracklib-small | ||
| 232 | set complete+=k " make default completer <C-N> respect the dictionary | ||
| 175 | 233 | ||
| 234 | let g:spellfile_URL = 'http://ftp.vim.org/vim/runtime/spell' | ||
| 176 | 235 | ||
| 177 | " settings ============================================. | 236 | " settings ============================================. |
| 237 | " | ||
| 238 | " autocmd BufEnter * lcd %:p:h | ||
| 239 | set autochdir | " When on, Vim will change the current working directory | ||
| 178 | set shell=/bin/bash | " many scripts rely on bash, but its path varies why it is commented out here | 240 | set shell=/bin/bash | " many scripts rely on bash, but its path varies why it is commented out here |
| 179 | " set selectmode=mouse,key,cmd | " enters vim's select mode when pressing shift-left or shift-END | 241 | " set selectmode=mouse,key,cmd | " enters vim's select mode when pressing shift-left or shift-END |
| 180 | " set keymodel=startsel,stopsel | " makes shift-left, shift-right available for selecting text | 242 | " set keymodel=startsel,stopsel | " makes shift-left, shift-right available for selecting text |
| @@ -204,17 +266,20 @@ set notimeout ttimeout | " improves performance but is known to cause pro | |||
| 204 | set nowrap | " but do not (by default) wrap long lines around | 266 | set nowrap | " but do not (by default) wrap long lines around |
| 205 | set number | " turn line numbers on/off (performance decreases when they are shown) | 267 | set number | " turn line numbers on/off (performance decreases when they are shown) |
| 206 | set pumheight=8 | " Determines the maximum number of items to show in the popup menu for | 268 | set pumheight=8 | " Determines the maximum number of items to show in the popup menu for |
| 269 | set path+=** | " allow recursive searches for files | ||
| 207 | set redrawtime=400 | " The time in milliseconds for redrawing the display. | 270 | set redrawtime=400 | " The time in milliseconds for redrawing the display. |
| 208 | " set restorescreen | " restores the console after exiting vim | 271 | " set restorescreen | " restores the console after exiting vim |
| 272 | " set shada+=n~/.vim/shada | " shada file to use | ||
| 209 | set scrolljump=5 | " how many lines get scrolled into view when cursor reaches the screens edge | 273 | set scrolljump=5 | " how many lines get scrolled into view when cursor reaches the screens edge |
| 210 | set spell spelllang=en,de | " enable spell checker | ||
| 211 | set splitbelow | " open new windows below the current one (i find that more intuitive) | 274 | set splitbelow | " open new windows below the current one (i find that more intuitive) |
| 275 | set shiftround | " indent/unindent snaps to multiple of shiftwidth | ||
| 276 | set showcmd | " essential: show keys of combined commands in the lower right corner | ||
| 212 | " set t_Co=256 | " required on some ssh sessions | 277 | " set t_Co=256 | " required on some ssh sessions |
| 213 | " set textwidth=100 | " line length (80 used to be default, but...) | 278 | " set textwidth=100 | " line length (80 used to be default, but...) |
| 214 | set thesaurus+=/home/max/.vim/thesaurus/php.txt | 279 | set thesaurus+=/home/max/.vim/thesaurus/php.txt |
| 215 | set ts=2 sts=2 sw=2 expandtab | " indentation which i like (abbr: tabstop, softtabstop, shiftwidth) | 280 | set ts=2 sts=2 sw=2 expandtab | " indentation which i like (abbr: tabstop, softtabstop, shiftwidth) |
| 216 | set ttimeoutlen=10 | " set esc key timeout in ms- | 281 | set ttimeoutlen=10 | " set esc key timeout in ms- |
| 217 | set ttyfast | " improves speed for terminal vim | 282 | " set ttyfast | " improves speed for terminal vim (incomp. with nvim) |
| 218 | set updatetime=1000 | " updates the screen more often | 283 | set updatetime=1000 | " updates the screen more often |
| 219 | " set ttyscroll=100 | " improves speed for terminal vim, incomp. with nvim | 284 | " set ttyscroll=100 | " improves speed for terminal vim, incomp. with nvim |
| 220 | set writedelay=0 | 285 | set writedelay=0 |
| @@ -243,6 +308,8 @@ if has("gui_running") | |||
| 243 | " set guifont=Droid\ Sans\ Mono\ for\ Powerline\ 12 | 308 | " set guifont=Droid\ Sans\ Mono\ for\ Powerline\ 12 |
| 244 | set guifont=Dejavu\ Sans\ Mono\ for\ Powerline\ 12 | 309 | set guifont=Dejavu\ Sans\ Mono\ for\ Powerline\ 12 |
| 245 | set guioptions-=e | " do not display tabs | 310 | set guioptions-=e | " do not display tabs |
| 311 | set guioptions-=L | " do not show left scrollbar | ||
| 312 | set guioptions-=r | " do not show right scrollbar | ||
| 246 | set winaltkeys=menu | " behave like other windows: ALT-key can be used to open the menu (and cannot be :remaped) | 313 | set winaltkeys=menu | " behave like other windows: ALT-key can be used to open the menu (and cannot be :remaped) |
| 247 | endif | 314 | endif |
| 248 | 315 | ||
| @@ -316,6 +383,21 @@ if has("autocmd") | |||
| 316 | autocmd VimLeave * silent !echo -ne "\033]112\007" | 383 | autocmd VimLeave * silent !echo -ne "\033]112\007" |
| 317 | augroup END | 384 | augroup END |
| 318 | 385 | ||
| 386 | augroup ChangeIcon | ||
| 387 | "if filereadable("/usr/bin/xseticon") | ||
| 388 | "if filereadable("~/.vim/nvim.png") | ||
| 389 | autocmd VimEnter * silent :execute "!xseticon -id $WINDOWID ~/.vim/nvim.png" | ||
| 390 | autocmd VimLeave * silent :execute "!xseticon -id $WINDOWID /usr/share/icons/gnome/32x32/apps/xfce-terminal.png" | ||
| 391 | "endif | ||
| 392 | "endif | ||
| 393 | augroup END | ||
| 394 | |||
| 395 | if has('nvim') | ||
| 396 | else | ||
| 397 | augroup vimonly | ||
| 398 | autocmd VimLeave * call system("echo -n $'" . escape(getreg(), "'") . "' | xsel -ib") | ||
| 399 | augroup END | ||
| 400 | endif | ||
| 319 | "set omnifunc=syntaxcomplete#Complete | 401 | "set omnifunc=syntaxcomplete#Complete |
| 320 | " au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main | 402 | " au BufNewFile,BufRead,BufEnter *.cpp,*.hpp set omnifunc=omni#cpp#complete#Main |
| 321 | " Enable omni completion. | 403 | " Enable omni completion. |
| @@ -334,15 +416,29 @@ if has("autocmd") | |||
| 334 | " endif | 416 | " endif |
| 335 | endif | 417 | endif |
| 336 | 418 | ||
| 337 | 419 | let &t_Co=256 | |
| 420 | set background=dark | ||
| 421 | " set termguicolors | ||
| 338 | let base16colorspace=256 | 422 | let base16colorspace=256 |
| 339 | if filereadable(expand("~/.vimrc_background")) | 423 | if filereadable(expand("~/.vimrc_background")) |
| 340 | source ~/.vimrc_background | 424 | source ~/.vimrc_background |
| 341 | set background=light | ||
| 342 | else | 425 | else |
| 343 | colorscheme base16-phd | 426 | colorscheme base16-phd |
| 344 | set background=dark | ||
| 345 | endif | 427 | endif |
| 428 | |||
| 429 | |||
| 430 | |||
| 431 | |||
| 432 | if !has('nvim') | ||
| 433 | set ttymouse=xterm2 | ||
| 434 | else | ||
| 435 | " shortcut \t opens a terminal in a horizontal split | ||
| 436 | nnoremap <leader>t :new +terminal<CR> | ||
| 437 | endif | ||
| 438 | |||
| 439 | |||
| 440 | |||
| 441 | |||
| 346 | " colorscheme base16-embers | 442 | " colorscheme base16-embers |
| 347 | " colorscheme base16-flat | 443 | " colorscheme base16-flat |
| 348 | " colorscheme base16-summerfruit-dark | 444 | " colorscheme base16-summerfruit-dark |
| @@ -380,16 +476,5 @@ endif | |||
| 380 | " let g:miniBufExplShowBufNumbers = 0 | 476 | " let g:miniBufExplShowBufNumbers = 0 |
| 381 | " let g:miniBufExplSplitToEdge = 1 | 477 | " let g:miniBufExplSplitToEdge = 1 |
| 382 | " let g:miniBufExplVSplit = 20 " column width in chars | 478 | " let g:miniBufExplVSplit = 20 " column width in chars |
| 383 | " NETRW: =============================================. | 479 | |
| 384 | " Plug 'tpope/vim-vinegar' | " Improves :Explore | 480 | |
| 385 | " let g:netrw_list_hide = '^\..*' | " Explore mode: hide files starting with dot | ||
| 386 | " let g:netrw_hide = 1 | " show not-hidden files only | ||
| 387 | " let g:netrw_liststyle = 3 | " 3=tree | ||
| 388 | " let g:netrw_banner = 0 | " display help messages? | ||
| 389 | " let g:netrw_winsize = 20 | " window size in percent | ||
| 390 | " let g:netrw_fastbrowse = 2 | " manually refresh direcory list (avoids display errors) | ||
| 391 | " let g:netrw_keepdir = 0 | ||
| 392 | " let g:netrw_browse_split = 4 | " 4=open in previous window | ||
| 393 | " let g:netrw_preview = 0 | " | ||
| 394 | " let g:netrw_alto = 0 | " open files on the right | ||
| 395 | " let g:netrw_altv = 1 | " open files on the right | ||
