" Vim-plug initialization " Avoid modify this section, unless you are very sure of what you are doing let vim_plug_just_installed = 0 let vim_plug_path = expand('~/.vim/autoload/plug.vim') if !filereadable(vim_plug_path) echo "Installing Vim-plug..." echo "" silent !mkdir -p ~/.vim/autoload silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim let vim_plug_just_installed = 1 endif " manually load vim-plug the first time if vim_plug_just_installed :execute 'source '.fnameescape(vim_plug_path) endif " Obscure hacks done, you can now modify the rest of the .vimrc as you wish :) " ============================================================================ " Active plugins " You can disable or add new ones here: " this needs to be here, so vim-plug knows we are declaring the plugins we " want to use call plug#begin('~/.vim/plugged') " Plugins from github repos: " Override configs by directory Plug 'arielrossanigo/dir-configs-override.vim' " Better file browser Plug 'scrooloose/nerdtree', {'on': ['NERDTreeToggle','NERDTreeFind']} " Code commenter Plug 'scrooloose/nerdcommenter' " Class/module browser Plug 'majutsushi/tagbar' " Code and files fuzzy finder Plug 'ctrlpvim/ctrlp.vim' " Extension to ctrlp, for fuzzy command finder Plug 'fisadev/vim-ctrlp-cmdpalette' " Zen coding Plug 'mattn/emmet-vim' " Git integration Plug 'motemen/git-vim' " Airline Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' " Terminal Vim with 256 colors colorscheme Plug 'fisadev/fisa-vim-colorscheme' " Consoles as buffers Plug 'rosenfeld/conque-term' " Pending tasks list Plug 'fisadev/FixedTaskList.vim' " Surround Plug 'tpope/vim-surround' " Repeat Plug 'tpope/vim-repeat' " Extended character info Plug 'tpope/vim-characterize' " Autoclose Plug 'Townk/vim-autoclose' " Indent text object Plug 'michaeljsmith/vim-indent-object' " Indentation based movements Plug 'jeetsukumaran/vim-indentwise' " Python mode (indentation, doc, refactor, lints, code checking, motion and " operators, highlighting, run and ipdb breakpoints) Plug 'klen/python-mode' " Better autocompletion Plug 'Shougo/neocomplcache.vim' " Snippets manager (SnipMate), dependencies, and snippets repo Plug 'MarcWeber/vim-addon-mw-utils' Plug 'tomtom/tlib_vim' Plug 'honza/vim-snippets' Plug 'garbas/vim-snipmate' " Git diff icons on the side of the file lines Plug 'airblade/vim-gitgutter' " Automatically sort python imports Plug 'fisadev/vim-isort' " Drag visual blocks arround Plug 'fisadev/dragvisuals.vim' " Window chooser Plug 't9md/vim-choosewin' " Python and other languages code checker Plug 'scrooloose/syntastic' " Paint css colors with the real color Plug 'lilydjwg/colorizer' " Ack code search (requires ack installed in the system) Plug 'mileszs/ack.vim' " Multiline edit Plug 'terryma/vim-multiple-cursors' " Ansible Plug 'pearofducks/ansible-vim' " Markdown preview (see repo for dependencies) Plug 'JamshedVesuna/vim-markdown-preview' " Undo tree Plug 'simnalamburt/vim-mundo' " Checkbox toggle Plug 'jkramer/vim-checkbox' if has('python') " YAPF formatter for Python Plug 'pignacio/vim-yapf-format' endif " Plugins from vim-scripts repos: " Search results counter Plug 'IndexedSearch' " XML/HTML tags navigation Plug 'matchit.zip' " Gvim colorscheme Plug 'Wombat' " Yank history navigation Plug 'YankRing.vim' " Plugins from other repos: " Vim plugin for Drupal Plug 'https://git.drupal.org/project/vimrc.git', {'rtp': 'bundle/vim-plugin-for-drupal', 'branch': '7.x-1.x', 'as': 'vim-drupal'} " Tell vim-plug we finished declaring plugins, so it can load them call plug#end() " ============================================================================ " Install plugins the first time vim runs if vim_plug_just_installed echo "Installing Bundles, please ignore key map error messages" :PlugInstall endif " ============================================================================ " Vim settings and mappings " You can edit them as you wish " no vi-compatible set nocompatible " allow plugins by file type (required for plugins!) filetype plugin on filetype indent on " change and show it in status line let mapleader = " " set showcmd " 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=2 tabstop=2 softtabstop=2 autocmd FileType htmldjango setlocal shiftwidth=2 tabstop=2 softtabstop=2 autocmd FileType javascript setlocal shiftwidth=2 tabstop=2 softtabstop=2 " 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 " buffer navigation mappings " http://joshldavis.com/2014/04/05/vim-tab-madness-buffers-vs-tabs/ set hidden map tn :bnext map tp :bprevious map tm :tabm map tt :e nmap bl :ls nmap bq :bp bd # map :bnext imap :bnext map :bprevious imap :bprevious " navigate windows with meta+arrows map l map h map k map j imap l imap h imap k imap j " old autocomplete keyboard shortcut imap " 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 nmap ,r :Ack nmap ,wr :Ack " use 256 colors when possible if (&term =~? 'mlterm\|xterm\|xterm-256\|screen-256') || has('nvim') let &t_Co = 256 colorscheme fisa else colorscheme delek endif " Fix arrow keys when run inside tmux (see http://superuser.com/a/402084). if &term =~ '^screen' " tmux will send xterm-style keys when its xterm-keys option is on execute "set =\e[1;*A" execute "set =\e[1;*B" execute "set =\e[1;*C" execute "set =\e[1;*D" endif " colors for gvim if has('gui_running') colorscheme wombat endif " when scrolling, keep cursor 3 lines away from screen border set scrolloff=3 " show the 81st column set colorcolumn=81 " 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 :TagbarToggle " autofocus on tagbar open let g:tagbar_autofocus = 1 " NERDTree ----------------------------- " toggle nerdtree display map :NERDTreeToggle " open nerdtree with the current file selected nmap ,t :NERDTreeFind " don;t show these file types let NERDTreeIgnore = ['\.pyc$', '\.pyo$'] " NERDCommenter ----------------------------- " add spaces after comment delimiters by default let g:NERDSpaceDelims = 1 " align line-wise comment delimiters flush left instead of following code indentation let g:NERDDefaultAlign = 'left' " enable trimming of trailing whitespace when uncommenting let g:NERDTrimTrailingWhitespace = 1 " change delimiter for php let g:NERDCustomDelimiters = { \ 'php': { 'left': '#' } \ } " Tasklist ------------------------------ " show pending tasks list map :TaskList " CtrlP ------------------------------ " file finder mapping let g:ctrlp_map = ',e' " tags (symbols) in current file finder mapping nmap ,g :CtrlPBufTag " tags (symbols) in all files finder mapping nmap ,G :CtrlPBufTagAll " general code finder in all files mapping nmap ,f :CtrlPLine " recent files finder mapping nmap ,m :CtrlPMRUFiles " commands finder mapping nmap ,c :CtrlPCmdPalette " 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(''), 'BufTag') nmap ,wG :call CtrlPWithSearchText(expand(''), 'BufTagAll') nmap ,wf :call CtrlPWithSearchText(expand(''), 'Line') nmap ,we :call CtrlPWithSearchText(expand(''), '') nmap ,pe :call CtrlPWithSearchText(expand(''), '') nmap ,wm :call CtrlPWithSearchText(expand(''), 'MRUFiles') nmap ,wc :call CtrlPWithSearchText(expand(''), 'CmdPalette') " 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$', \ } " GitGutter ------------------------------ " custom icons (you need a patched font) let g:gitgutter_sign_added = '➕' let g:gitgutter_sign_modified = '❗' let g:gitgutter_sign_removed = '➖' let g:gitgutter_sign_modified_removed = '✖' " Syntastic ------------------------------ " show list of errors and warnings on the current file nmap e :Errors " 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) 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 = '⚠' " Drupal coding standards in syntastic " " Passive mode for syntastic (only check on demand, not on save). " Use :SyntasticCheck to check and :SyntasticToggleMode to toggle " between passive and active modes. " " Syntastic configuration for phpcs is set in vim-for-drupal-plugin. let g:syntastic_mode_map = { 'mode': 'passive', \ 'active_filetypes': [], \ 'passive_filetypes': [] } " 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:PymodePython rope.goto() nmap ,o :RopeFindOccurrences " 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 = 1 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._ = '_' " Autoclose ------------------------------ " Fix to let ESC work as espected with Autoclose plugin let g:AutoClosePumvisible = {"ENTER": "\", "ESC": "\"} " DragVisuals ------------------------------ " mappings to move blocks in 4 directions vmap DVB_Drag('left') vmap DVB_Drag('right') vmap DVB_Drag('down') vmap DVB_Drag('up') " mapping to duplicate block vmap D DVB_Duplicate() " Window Chooser ------------------------------ " mapping nmap - (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 " Enable the list of buffers... let g:airline#extensions#tabline#enabled = 1 " ...but show just the filename let g:airline#extensions#tabline#fnamemod = ':t' " 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 = '⭡' " Multiple cursors ------------------------------ " Change multiple-cursors mappings so it won't conflict with yankring. let g:multi_cursor_use_default_mapping=0 let g:multi_cursor_next_key='' let g:multi_cursor_prev_key='' let g:multi_cursor_skip_key='' let g:multi_cursor_quit_key='' " Ansible ------------------------------ let g:ansible_name_highlight = 'b' let g:ansible_extra_syntaxes= 'sh.vim' let g:ansible_extra_keywords_highlight = 1 " Markdown preview ------------------------------ let vim_markdown_preview_github=1 " Mundo ------------------------------ nnoremap :MundoToggle let g:mundo_width = 60 let g:mundo_right = 1