diff options
author | Daniel Schadt <kingdread@gmx.de> | 2016-08-22 23:06:24 +0200 |
---|---|---|
committer | Daniel Schadt <kingdread@gmx.de> | 2016-08-22 23:06:24 +0200 |
commit | ea50a8561ef706526952d0a6109ae2dcd7bb6f37 (patch) | |
tree | 3779e6a0ff29207bc23c69a34b7ffb72116cac09 /vim | |
download | dotfiles-ea50a8561ef706526952d0a6109ae2dcd7bb6f37.tar.gz dotfiles-ea50a8561ef706526952d0a6109ae2dcd7bb6f37.tar.bz2 dotfiles-ea50a8561ef706526952d0a6109ae2dcd7bb6f37.zip |
add basic dotfiles
Dotfiles for zsh, vim and herbstluftwm!
Diffstat (limited to 'vim')
-rw-r--r-- | vim/.vimrc | 425 |
1 files changed, 425 insertions, 0 deletions
diff --git a/vim/.vimrc b/vim/.vimrc new file mode 100644 index 0000000..d306d12 --- /dev/null +++ b/vim/.vimrc @@ -0,0 +1,425 @@ +" ============================================================================ +" Vundle initialization +" Avoid modify this section, unless you are very sure of what you are doing + +" no vi-compatible +set nocompatible +set clipboard=unnamedplus +set cino=N-s +set relativenumber + +" Setting up Vundle - the vim plugin bundler +let iCanHazVundle=1 +let vundle_readme=expand('~/.vim/bundle/vundle/README.md') +if !filereadable(vundle_readme) + echo "Installing Vundle..." + echo "" + silent !mkdir -p ~/.vim/bundle + silent !git clone https://github.com/gmarik/vundle ~/.vim/bundle/vundle + let iCanHazVundle=0 +endif + +filetype off + +set rtp+=~/.vim/bundle/vundle/ +call vundle#rc() + +" let Vundle manage Vundle +Bundle 'gmarik/vundle' + +" ============================================================================ +" Active plugins +" You can disable or add new ones here: + +" Plugins from github repos: + +" Python and PHP Debugger +" Bundle 'fisadev/vim-debug.vim' +" Better file browser +Bundle 'scrooloose/nerdtree' +" Code commenter +Bundle 'scrooloose/nerdcommenter' +" Class/module browser +Bundle 'majutsushi/tagbar' +" Code and files fuzzy finder +Bundle 'kien/ctrlp.vim' +" Extension to ctrlp, for fuzzy command finder +Bundle 'fisadev/vim-ctrlp-cmdpalette' +" Zen coding +Bundle 'mattn/emmet-vim' +" Git integration +Bundle 'motemen/git-vim' +" Tab list panel +Bundle 'kien/tabman.vim' +" Airline +Bundle 'vim-airline/vim-airline' +Bundle 'vim-airline/vim-airline-themes' +" Terminal Vim with 256 colors colorscheme +Bundle 'fisadev/fisa-vim-colorscheme' +" Consoles as buffers +Bundle 'rosenfeld/conque-term' +" Pending tasks list +Bundle 'fisadev/FixedTaskList.vim' +" Surround +Bundle 'tpope/vim-surround' +" Autoclose +Bundle 'Townk/vim-autoclose' +" Indent text object +Bundle 'michaeljsmith/vim-indent-object' +" Python mode (indentation, doc, refactor, lints, code checking, motion and +" operators, highlighting, run and ipdb breakpoints) +Bundle 'klen/python-mode' +" Better autocompletion +"Bundle 'Shougo/neocomplcache.vim' +" Snippets manager (SnipMate), dependencies, and snippets repo +"Bundle 'MarcWeber/vim-addon-mw-utils' +"Bundle 'tomtom/tlib_vim' +"Bundle 'honza/vim-snippets' +"Bundle 'garbas/vim-snipmate' +" Git/mercurial/others diff icons on the side of the file lines +Bundle 'mhinz/vim-signify' +" Automatically sort python imports +Bundle 'fisadev/vim-isort' +" Drag visual blocks arround +Bundle 'fisadev/dragvisuals.vim' +" Window chooser +Bundle 't9md/vim-choosewin' +" Python and other languages code checker +"Bundle 'scrooloose/syntastic' +" Paint css colors with the real color +Bundle 'lilydjwg/colorizer' +" Relative numbering of lines (0 is the current line) +" (disabled by default because is very intrusive and can't be easily toggled +" on/off. When the plugin is present, will always activate the relative +" numbering every time you go to normal mode. Author refuses to add a setting +" to avoid that) +" Bundle 'myusuf3/numbers.vim' +Bundle 'rust-lang/rust.vim' + +" Plugins from vim-scripts repos: + +" Search results counter +Bundle 'IndexedSearch' +" XML/HTML tags navigation +Bundle 'matchit.zip' +" Gvim colorscheme +Bundle 'Wombat' +" Yank history navigation +Bundle 'YankRing.vim' + +" ============================================================================ +" Install plugins the first time vim runs + +if iCanHazVundle == 0 + echo "Installing Bundles, please ignore key map error messages" + echo "" + :BundleInstall +endif + +" ============================================================================ +" Vim settings and mappings +" You can edit them as you wish + +" allow plugins by file type (required for plugins!) +filetype plugin on +filetype indent on + +" tabs and spaces handling +set expandtab +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 + +" tab length exceptions on some file types +autocmd FileType html setlocal shiftwidth=4 tabstop=4 softtabstop=4 +autocmd FileType htmldjango setlocal shiftwidth=4 tabstop=4 softtabstop=4 +autocmd FileType javascript setlocal shiftwidth=4 tabstop=4 softtabstop=4 + +" always show status bar +set ls=2 + +" incremental search +set incsearch +" highlighted search results +set hlsearch + +" syntax highlight on +syntax on + +" show line numbers +set nu + +" tab navigation mappings +map tn :tabn<CR> +map tp :tabp<CR> +map tm :tabm +map tt :tabnew +map ts :tab split<CR> +map <C-S-Right> :tabn<CR> +imap <C-S-Right> <ESC>:tabn<CR> +map <C-S-Left> :tabp<CR> +imap <C-S-Left> <ESC>:tabp<CR> + +" navigate windows with meta+arrows +map <M-Right> <c-w>l +map <M-Left> <c-w>h +map <M-Up> <c-w>k +map <M-Down> <c-w>j +imap <M-Right> <ESC><c-w>l +imap <M-Left> <ESC><c-w>h +imap <M-Up> <ESC><c-w>k +imap <M-Down> <ESC><c-w>j + +" old autocomplete keyboard shortcut +imap <C-J> <C-X><C-O> + +" Comment this line to enable autocompletion preview window +" (displays documentation related to the selected completion option) +" Disabled by default because preview makes the window flicker +set completeopt-=preview + +" save as sudo +ca w!! w !sudo tee "%" + +" simple recursive grep +" both recursive grep commands with internal or external (fast) grep +command! -nargs=1 RecurGrep lvimgrep /<args>/gj ./**/*.* | lopen | set nowrap +command! -nargs=1 RecurGrepFast silent exec 'lgrep! <q-args> ./**/*.*' | lopen +" mappings to call them +nmap ,R :RecurGrep +nmap ,r :RecurGrepFast +" mappings to call them with the default word as search text +nmap ,wR :RecurGrep <cword><CR> +nmap ,wr :RecurGrepFast <cword><CR> + +" use 256 colors when possible +if (&term =~? 'mlterm\|xterm\|xterm-256\|screen-256') || has('nvim') + let &t_Co = 256 + " colorscheme fisa + colorscheme desert +else + colorscheme desert +endif + +" colors for gvim +if has('gui_running') + colorscheme wombat +endif + +" when scrolling, keep cursor 3 lines away from screen border +set scrolloff=3 + +" autocompletion of files and commands behaves like shell +" (complete only the common part, list the options that match) +set wildmode=list:longest + +" better backup, swap and undos storage +set directory=~/.vim/dirs/tmp " directory to place swap files in +set backup " make backup files +set backupdir=~/.vim/dirs/backups " where to put backup files +set undofile " persistent undos - undo after you re-open the file +set undodir=~/.vim/dirs/undos +set viminfo+=n~/.vim/dirs/viminfo +" store yankring history file there too +let g:yankring_history_dir = '~/.vim/dirs/' + +" create needed directories if they don't exist +if !isdirectory(&backupdir) + call mkdir(&backupdir, "p") +endif +if !isdirectory(&directory) + call mkdir(&directory, "p") +endif +if !isdirectory(&undodir) + call mkdir(&undodir, "p") +endif + +" ============================================================================ +" Plugins settings and mappings +" Edit them as you wish. + +" Tagbar ----------------------------- + +" toggle tagbar display +map <F4> :TagbarToggle<CR> +" autofocus on tagbar open +let g:tagbar_autofocus = 1 + +" NERDTree ----------------------------- + +" toggle nerdtree display +map <F3> :NERDTreeToggle<CR> +" open nerdtree with the current file selected +nmap ,t :NERDTreeFind<CR> +" don;t show these file types +let NERDTreeIgnore = ['\.pyc$', '\.pyo$'] + + +" Tasklist ------------------------------ + +" show pending tasks list +map <F2> :TaskList<CR> + +" Vim-debug ------------------------------ + +" disable default mappings, have a lot of conflicts with other plugins +let g:vim_debug_disable_mappings = 1 +" add some useful mappings +map <F5> :Dbg over<CR> +map <F6> :Dbg into<CR> +map <F7> :Dbg out<CR> +map <F8> :Dbg here<CR> +map <F9> :Dbg break<CR> +map <F10> :Dbg watch<CR> +map <F11> :Dbg down<CR> +map <F12> :Dbg up<CR> + +" CtrlP ------------------------------ + +" file finder mapping +let g:ctrlp_map = ',e' +" tags (symbols) in current file finder mapping +nmap ,g :CtrlPBufTag<CR> +" tags (symbols) in all files finder mapping +nmap ,G :CtrlPBufTagAll<CR> +" general code finder in all files mapping +nmap ,f :CtrlPLine<CR> +" recent files finder mapping +nmap ,m :CtrlPMRUFiles<CR> +" commands finder mapping +nmap ,c :CtrlPCmdPalette<CR> +" to be able to call CtrlP with default search text +function! CtrlPWithSearchText(search_text, ctrlp_command_end) + execute ':CtrlP' . a:ctrlp_command_end + call feedkeys(a:search_text) +endfunction +" same as previous mappings, but calling with current word as default text +nmap ,wg :call CtrlPWithSearchText(expand('<cword>'), 'BufTag')<CR> +nmap ,wG :call CtrlPWithSearchText(expand('<cword>'), 'BufTagAll')<CR> +nmap ,wf :call CtrlPWithSearchText(expand('<cword>'), 'Line')<CR> +nmap ,we :call CtrlPWithSearchText(expand('<cword>'), '')<CR> +nmap ,pe :call CtrlPWithSearchText(expand('<cfile>'), '')<CR> +nmap ,wm :call CtrlPWithSearchText(expand('<cword>'), 'MRUFiles')<CR> +nmap ,wc :call CtrlPWithSearchText(expand('<cword>'), 'CmdPalette')<CR> +" don't change working directory +let g:ctrlp_working_path_mode = 0 +" ignore these files and folders on file finder +let g:ctrlp_custom_ignore = { + \ 'dir': '\v[\/](\.git|\.hg|\.svn|node_modules)$', + \ 'file': '\.pyc$\|\.pyo$', + \ } + +" Syntastic ------------------------------ + +" show list of errors and warnings on the current file +nmap <leader>e :Errors<CR> +" check also when just opened the file +let g:syntastic_check_on_open = 1 +" don't put icons on the sign column (it hides the vcs status icons of signify) +let g:syntastic_enable_signs = 0 +" custom icons (enable them if you use a patched font, and enable the previous +" setting) +"let g:syntastic_error_symbol = '✗' +"let g:syntastic_warning_symbol = '⚠' +"let g:syntastic_style_error_symbol = '✗' +"let g:syntastic_style_warning_symbol = '⚠' + +" Python-mode ------------------------------ + +" don't use linter, we use syntastic for that +let g:pymode_lint_on_write = 0 +let g:pymode_lint_signs = 0 +" don't fold python code on open +let g:pymode_folding = 0 +" don't load rope by default. Change to 1 to use rope +let g:pymode_rope = 0 +" open definitions on same window, and custom mappings for definitions and +" occurrences +let g:pymode_rope_goto_definition_bind = ',d' +let g:pymode_rope_goto_definition_cmd = 'e' +nmap ,D :tab split<CR>:PymodePython rope.goto()<CR> +nmap ,o :RopeFindOccurrences<CR> + +" NeoComplCache ------------------------------ + +" most of them not documented because I'm not sure how they work +" (docs aren't good, had to do a lot of trial and error to make +" it play nice) +let g:neocomplcache_enable_at_startup = 1 +let g:neocomplcache_enable_ignore_case = 1 +let g:neocomplcache_enable_smart_case = 1 +let g:neocomplcache_enable_auto_select = 1 +let g:neocomplcache_enable_fuzzy_completion = 1 +let g:neocomplcache_enable_camel_case_completion = 1 +let g:neocomplcache_enable_underbar_completion = 1 +let g:neocomplcache_fuzzy_completion_start_length = 1 +let g:neocomplcache_auto_completion_start_length = 10 +let g:neocomplcache_manual_completion_start_length = 1 +let g:neocomplcache_min_keyword_length = 1 +let g:neocomplcache_min_syntax_length = 1 +" complete with workds from any opened file +let g:neocomplcache_same_filetype_lists = {} +let g:neocomplcache_same_filetype_lists._ = '_' + +" TabMan ------------------------------ + +" mappings to toggle display, and to focus on it +let g:tabman_toggle = 'tl' +let g:tabman_focus = 'tf' + +" Autoclose ------------------------------ + +" Fix to let ESC work as espected with Autoclose plugin +let g:AutoClosePumvisible = {"ENTER": "\<C-Y>", "ESC": "\<ESC>"} + +" DragVisuals ------------------------------ + +" mappings to move blocks in 4 directions +vmap <expr> <S-M-LEFT> DVB_Drag('left') +vmap <expr> <S-M-RIGHT> DVB_Drag('right') +vmap <expr> <S-M-DOWN> DVB_Drag('down') +vmap <expr> <S-M-UP> DVB_Drag('up') +" mapping to duplicate block +vmap <expr> D DVB_Duplicate() + +" Signify ------------------------------ + +" this first setting decides in which order try to guess your current vcs +" UPDATE it to reflect your preferences, it will speed up opening files +let g:signify_vcs_list = [ 'git', 'hg' ] +" mappings to jump to changed blocks +nmap <leader>sn <plug>(signify-next-hunk) +nmap <leader>sp <plug>(signify-prev-hunk) +" nicer colors +highlight DiffAdd cterm=bold ctermbg=none ctermfg=119 +highlight DiffDelete cterm=bold ctermbg=none ctermfg=167 +highlight DiffChange cterm=bold ctermbg=none ctermfg=227 +highlight SignifySignAdd cterm=bold ctermbg=237 ctermfg=119 +highlight SignifySignDelete cterm=bold ctermbg=237 ctermfg=167 +highlight SignifySignChange cterm=bold ctermbg=237 ctermfg=227 + +" Window Chooser ------------------------------ + +" mapping +nmap - <Plug>(choosewin) +" show big letters +let g:choosewin_overlay_enable = 1 + +" Airline ------------------------------ + +let g:airline_powerline_fonts = 0 +let g:airline_theme = 'bubblegum' +let g:airline#extensions#whitespace#enabled = 0 + +" to use fancy symbols for airline, uncomment the following lines and use a +" patched font (more info on the README.rst) +"if !exists('g:airline_symbols') +" let g:airline_symbols = {} +"endif +"let g:airline_left_sep = '⮀' +"let g:airline_left_alt_sep = '⮁' +"let g:airline_right_sep = '⮂' +"let g:airline_right_alt_sep = '⮃' +"let g:airline_symbols.branch = '⭠' +"let g:airline_symbols.readonly = '⭤' +"let g:airline_symbols.linenr = '⭡' |