Created
August 25, 2015 14:00
-
-
Save prelegalwonder/934662a5edce92b78cbd to your computer and use it in GitHub Desktop.
My Vim config
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
set nocompatible " be iMproved, required | |
filetype off " required | |
" set the runtime path to include Vundle and initialize | |
set rtp+=~/.vim/bundle/Vundle.vim | |
call vundle#begin() | |
" alternatively, pass a path where Vundle should install plugins | |
"call vundle#begin('~/some/path/here') | |
" let Vundle manage Vundle, required | |
Plugin 'gmarik/Vundle.vim' | |
" The following are examples of different formats supported. | |
" Keep Plugin commands between vundle#begin/end. | |
" plugin on GitHub repo | |
Plugin 'tpope/vim-fugitive' | |
" plugin from http://vim-scripts.org/vim/scripts.html | |
Plugin 'L9' | |
" Git plugin not hosted on GitHub | |
" Plugin 'git://git.wincent.com/command-t.git' | |
" The sparkup vim script is in a subdirectory of this repo called vim. | |
" Pass the path to set the runtimepath properly. | |
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'} | |
" Avoid a name conflict with L9 | |
" Plugin 'user/L9', {'name': 'newL9'} | |
" Syntastic Plugin | |
Plugin 'scrooloose/syntastic' | |
" Python and PHP Debugger | |
Plugin 'fisadev/vim-debug.vim' | |
" Bbye Buffer Plugin" | |
Plugin 'moll/vim-bbye' | |
" Better file browser | |
Plugin 'scrooloose/nerdtree' | |
" Code commenter | |
Plugin 'scrooloose/nerdcommenter' | |
" Class/module browser | |
Plugin 'majutsushi/tagbar' | |
" Tagbar support for Javascript | |
" Plugin 'marijnh/tern_for_vim' | |
" Code and files fuzzy finder | |
Plugin 'kien/ctrlp.vim' | |
" Extension to ctrlp, for fuzzy command finder | |
Plugin 'fisadev/vim-ctrlp-cmdpalette' | |
" Zen coding | |
Plugin 'mattn/emmet-vim' | |
" Git integration | |
Plugin 'motemen/git-vim' | |
" Tab list panel | |
Plugin 'kien/tabman.vim' | |
" Airline | |
Plugin 'bling/vim-airline' | |
" Consoles as buffers | |
Plugin 'rosenfeld/conque-term' | |
" Pending tasks list | |
Plugin 'fisadev/FixedTaskList.vim' | |
" Surround | |
Plugin 'tpope/vim-surround' | |
" Autoclose | |
Plugin 'Townk/vim-autoclose' | |
" Indent text object | |
Plugin 'michaeljsmith/vim-indent-object' | |
" Python mode (indentation, doc, refactor, lints, code checking, motion and | |
" operators, highlighting, run and ipdb breakpoints) | |
Plugin 'klen/python-mode' | |
" Better autocompletion | |
Plugin 'Shougo/neocomplcache.vim' | |
" Snippets manager (SnipMate), dependencies, and snippets repo | |
Plugin 'MarcWeber/vim-addon-mw-utils' | |
Plugin 'tomtom/tlib_vim' | |
Plugin 'honza/vim-snippets' | |
Plugin 'garbas/vim-snipmate' | |
" Git diff icons on the side of the file lines | |
Plugin 'airblade/vim-gitgutter' | |
" Automatically sort python imports | |
Plugin 'fisadev/vim-isort' | |
" Drag visual blocks arround | |
Plugin 'fisadev/dragvisuals.vim' | |
" Python code checker | |
Plugin 'pyflakes.vim' | |
" Search results counter | |
Plugin 'IndexedSearch' | |
" XML/HTML tags navigation | |
Plugin 'matchit.zip' | |
" Gvim colorscheme | |
Plugin 'Wombat' | |
" Yank history navigation | |
Plugin 'YankRing.vim' | |
" Chef Plugin" | |
" Plugin 't9md/vim-chef' | |
" All of your Plugins must be added before the following line | |
call vundle#end() " required | |
filetype plugin indent on " required | |
" To ignore plugin indent changes, instead use: | |
"filetype plugin on | |
" | |
" Brief help | |
" :PluginList - lists configured plugins | |
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate | |
" :PluginSearch foo - searches for foo; append `!` to refresh local cache | |
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal | |
" | |
" see :h vundle for more details or wiki for FAQ | |
" Put your non-Plugin stuff after this line | |
" allow plugins by file type | |
filetype plugin on | |
filetype indent on | |
" tabs and spaces handling | |
set expandtab | |
set tabstop=4 | |
set softtabstop=4 | |
set shiftwidth=4 | |
" tablength exceptions | |
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 | |
" line numbers | |
set nu | |
" toggle Tagbar display | |
map <F4> :TagbarToggle<CR> | |
" autofocus on Tagbar open | |
let g:tagbar_autofocus = 1 | |
" NERDTree (better file browser) toggle | |
map <F3> :NERDTreeToggle<CR> | |
nmap ,t :NERDTreeFind<CR> | |
" tab navigation | |
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 | |
" fix some problems with gitgutter and other plugins (originally jedi-vim, but | |
" left just in case, and it's faster) | |
let g:gitgutter_eager = 0 | |
let g:gitgutter_realtime = 0 | |
" old autocomplete keyboard shortcut | |
imap <C-J> <C-X><C-O> | |
" show pending tasks list | |
map <F2> :TaskList<CR> | |
" save as sudo | |
ca w!! w !sudo tee "%" | |
" debugger keyboard shortcuts | |
let g:vim_debug_disable_mappings = 1 | |
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 (new fuzzy finder) | |
let g:ctrlp_map = ',e' | |
nmap ,g :CtrlPBufTag<CR> | |
nmap ,G :CtrlPBufTagAll<CR> | |
nmap ,f :CtrlPLine<CR> | |
nmap ,m :CtrlPMRUFiles<CR> | |
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 | |
" CtrlP with 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 files on fuzzy finder | |
let g:ctrlp_custom_ignore = { | |
\ 'dir': '\v[\/](\.git|\.hg|\.svn)$', | |
\ 'file': '\.pyc$\|\.pyo$', | |
\ } | |
" Ignore files on NERDTree | |
let NERDTreeIgnore = ['\.pyc$', '\.pyo$'] | |
" simple recursive grep | |
command! -nargs=1 RecurGrep lvimgrep /<args>/gj ./**/*.* | lopen | set nowrap | |
command! -nargs=1 RecurGrepFast silent exec 'lgrep! <q-args> ./**/*.*' | lopen | |
nmap ,R :RecurGrep | |
nmap ,r :RecurGrepFast | |
nmap ,wR :RecurGrep <cword><CR> | |
nmap ,wr :RecurGrepFast <cword><CR> | |
" python-mode settings | |
" don't show lint result every time we save a file | |
let g:pymode_lint_on_write = 0 | |
" run pep8+pyflakes+pylint validator with \8 | |
autocmd FileType python map <buffer> <leader>8 :PymodeLint<CR> | |
" rules to ignore (example: "E501,W293") | |
let g:pymode_lint_ignore = "" | |
" don't add extra column for error icons (on console vim creates a 2-char-wide | |
" extra column) | |
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 with my custom mapping | |
let g:pymode_rope_goto_definition_bind = ',d' | |
let g:pymode_rope_goto_definition_cmd = 'e' | |
" neocomplcache settings | |
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_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._ = '_' | |
" rope (from python-mode) settings | |
nmap ,D :tab split<CR>:PymodePython rope.goto()<CR> | |
nmap ,o :RopeFindOccurrences<CR> | |
" don't let pyflakes allways override the quickfix list | |
let g:pyflakes_use_quickfix = 0 | |
" tabman shortcuts | |
let g:tabman_toggle = 'tl' | |
let g:tabman_focus = 'tf' | |
" use 256 colors when possible | |
if &term =~? 'mlterm\|xterm\|xterm-256\|screen-256' | |
let &t_Co = 256 | |
" color | |
colorscheme wombat | |
else | |
" color | |
colorscheme delek | |
endif | |
" colors for gvim | |
if has('gui_running') | |
colorscheme wombat | |
set guifont=DejaVu\ Sans\ Mono\ for\ Powerline:h11 | |
endif | |
" Enable keyboard shortcuts for tern_for_vim | |
let g:tern_map_keys=1 | |
" 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 | |
" Fix to let ESC work as espected with Autoclose plugin | |
let g:AutoClosePumvisible = {"ENTER": "\<C-Y>", "ESC": "\<ESC>"} | |
" 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 | |
" vim-airline settings | |
let g:airline_powerline_fonts = 1 | |
let g:airline_theme = 'bubblegum' | |
let g:airline#extensions#whitespace#enabled = 0 | |
" dragvisuals mappings | |
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') | |
vmap <expr> D DVB_Duplicate() | |
:nnoremap <Leader>q :Bdelete<CR> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment