From 1d23f35df30343eba3fe029002854f992fe1e4ba Mon Sep 17 00:00:00 2001 From: Tharre Date: Tue, 17 Jul 2018 13:50:25 +0200 Subject: vim: major restructuring and improvements Took many settings from tpope's vim-sensible[0] and the new vim defaults.vim[1] and incorporated them into my vimrc. See also [2] for an explanation of those common settings. Everything is now properly divided into sections now as well, and folding by markers (`{{{`) is enabled. [0] https://github.com/tpope/vim-sensible [1] https://github.com/vim/vim/blob/master/runtime/defaults.vim [2] https://github.com/sheerun/vimrc --- .vimrc | 171 ++++++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 115 insertions(+), 56 deletions(-) diff --git a/.vimrc b/.vimrc index 34564cb..e330506 100644 --- a/.vimrc +++ b/.vimrc @@ -1,78 +1,102 @@ -" Plugins for review: -" 'msanders/snipmate.vim' -" 'godlygeek/tabular' -" 'plasticboy/vim-markdown' -" Consider using sections like this: -" Section Name {{{ -" set number "This will be folded -" }}} +" ~/.vimrc runtime bundle/vim-pathogen/autoload/pathogen.vim execute pathogen#infect() execute pathogen#helptags() + +" options {{{ +" =========== + set nocompatible " Be iMproved -let mapleader="," " set leader early as otherwise it wouldn't work +let mapleader="," " set leader early to avoid problems + filetype plugin indent on +syntax enable -" ========== general settings ========== set encoding=utf-8 set ff=unix set number +set relativenumber set clipboard=unnamedplus set showmatch " show matching brackets +set hidden +set autoread set incsearch " Find as you type search set hlsearch " Highlight search terms set ignorecase " Case-insensitive searching. set smartcase " But case-sensitive if expression contains a capital letter. +set complete-=i +set nrformats-=octal +set ttimeout +set ttimeoutlen=100 + set history=10000 " remember more commands and search history set undolevels=10000 " use many levels of undo set nobackup set noswapfile +set viminfo^=! " always save upper case variables to viminfo file +set autoindent set tabstop=8 +set smarttab +set backspace=indent,eol,start set shiftwidth=8 set textwidth=80 set cc=81 -"set expandtab - -syntax enable -set background=dark -colorscheme distinguished set list -set listchars=tab:>-,trail:~ +set listchars=tab:>-,trail:~,extends:>,precedes:<,nbsp:+ set lazyredraw set wildmenu - -set relativenumber - set wildignore+=*.a,*.o,*.class set wildignore+=*.bmp,*.gif,*.ico,*.jpg,*.jpeg,*.png set wildignore+=.DS_Store,.git,.hg,.svn set wildignore+=*~,*.swp,*.tmp +set scrolloff=1 " always show at least one line above/below the cursor. +set sidescrolloff=5 +set display+=lastline + +set formatoptions+=j " delete comment character when joining commented lines + +if &sessionoptions =~# '\' + set sessionoptions-=options + set sessionoptions+=localoptions +endif + +" Allow color schemes to do bright colors without forcing bold. +if &t_Co == 8 && $TERM !~# '^linux\|^Eterm' + set t_Co=16 +endif + +if !has('gui_running') && &t_Co != 256 + colorscheme delek +else + colorscheme distinguished +endif + +" Load matchit.vim, but only if the user hasn't installed a newer version. +if !exists('g:loaded_matchit') && findfile('plugin/matchit.vim', &rtp) ==# '' + runtime! macros/matchit.vim +endif + +" }}} +" general mappings {{{ +" ==================== +" Plugin-specific mappings can be found under plugin settings->mappings + +inoremap u + " jk is escape inoremap jk -augroup reload_vimrc " { - autocmd! - autocmd BufWritePost $MYVIMRC source $MYVIMRC -augroup END " } - " switch buffers with space! nnoremap :call SwitchBuffer() -function! SwitchBuffer() - exe "ls" - let c = nr2char(getchar()) - exe "b " . c - redraw -endfunction - map 1 :diffget LO:diffupdate map 2 :diffget BA:diffupdate map 3 :diffget RE:diffupdate @@ -90,30 +114,44 @@ cmap w!! w !sudo tee % >/dev/null " turn off search highlight nnoremap :nohlsearch -" ========== file specific settings ========== +" }}} +" autocommands {{{ +" ================ + +" filetype specific {{{ + " Markdown autocmd BufRead,BufNew *.md set filetype=markdown " java -au BufNewFile,BufRead *.java set tabstop=4 softtabstop=4 shiftwidth=4 smarttab autoindent cc=121 +au BufNewFile,BufRead *.java set tabstop=4 softtabstop=4 shiftwidth=4 cc=121 " PKGBUILD autocmd BufRead,BufNew PKGBUILD set filetype=sh -" ========== plugin settings ========== -" airline -set laststatus=2 -let g:airline_theme = 'powerlineish' -let g:airline#extensions#tabline#enabled = 1 -let g:airline#extensions#tabline#fnamemod = ':t' -" only enable trailing whitespace checking -let g:airline#extensions#whitespace#checks = [ 'trailing' ] -let g:airline#extensions#wordcount#enabled = 0 " extremely slow on bigger files +" }}} -" ALE -let g:ale_linters = {'text': ['proselint', 'vale']} -nmap (ale_previous_wrap) -nmap (ale_next_wrap) +augroup reload_vimrc + autocmd! + autocmd BufWritePost $MYVIMRC source $MYVIMRC +augroup END + +" }}} +" functions {{{ +" ============= + +function! SwitchBuffer() + exe "ls" + let c = nr2char(getchar()) + exe "b " . c + redraw +endfunction + +" }}} +" plugin settings {{{ +" =================== + +" mappings {{{ " Start interactive EasyAlign in visual mode (e.g. vip) vmap (EasyAlign) @@ -124,29 +162,50 @@ nmap ga (EasyAlign) " toggle gundo nnoremap u :GundoToggle -" ctrlp -let g:ctrlp_max_files = 1000000 -let g:ctrlp_cmd = 'CtrlPMixed' - -" supertab -let g:SuperTabDefaultCompletionType = "context" - " javacomplete2 autocmd FileType java setlocal omnifunc=javacomplete#Complete nmap (JavaComplete-Imports-AddSmart) nmap (JavaComplete-Imports-AddMissing) nmap (JavaComplete-Imports-RemoveUnused) - " Automatically import nmap ai (JavaComplete-Imports-AddMissing) -" markdown -let g:vim_markdown_math = 1 +" }}} + +" airline {{{ +set laststatus=2 +let g:airline_theme = 'powerlineish' +let g:airline#extensions#tabline#enabled = 1 +let g:airline#extensions#tabline#fnamemod = ':t' +" only enable trailing whitespace checking +let g:airline#extensions#whitespace#checks = [ 'trailing' ] +let g:airline#extensions#wordcount#enabled = 0 " extremely slow on bigger files +" }}} + +" ALE {{{ +nmap (ale_previous_wrap) +nmap (ale_next_wrap) " html let g:ale_linters = { \ 'html': ['htmlhint', 'tidy'], +\ 'text': ['proselint', 'vale'], \} +" }}} + +" ctrlp +let g:ctrlp_max_files = 1000000 +let g:ctrlp_cmd = 'CtrlPMixed' + +" supertab +let g:SuperTabDefaultCompletionType = "context" + +" markdown +let g:vim_markdown_math = 1 " hexmode let g:hexmode_patterns = '*.bin,*.exe,*.dat,*.rom' + +" }}} + +" vim:fdm=marker -- cgit v1.2.3-70-g09d2