1.一个现成的一键安装脚本
curl -O https://raw.githubusercontent.com/vince67/v7_config/master/vim.sh
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
if vim_plug_just_installed
:execute \'source \'.fnameescape(vim_plug_path)
endif
call plug#begin(\'~/.vim/plugged\')
" Override configs by directory
Plug \'arielrossanigo/dir-configs-override.vim\'
" Better file browser
Plug \'scrooloose/nerdtree\'
" 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\'
" Tab list panel
Plug \'kien/tabman.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\'
" Autoclose
Plug \'Townk/vim-autoclose\'
" Indent text object
Plug \'michaeljsmith/vim-indent-object\'
" Indentation based movements
Plug \'jeetsukumaran/vim-indentwise\'
" Python autocompletion, go to definition.
Plug \'davidhalter/jedi-vim\'
" 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/mercurial/others diff icons on the side of the file lines
Plug \'mhinz/vim-signify\'
" 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\'
if has(\'python\')
" YAPF formatter for Python
Plug \'pignacio/vim-yapf-format\'
endif
" 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)
" Plug \'myusuf3/numbers.vim\'
" 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\'
" 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
" 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
set guioptions-=T
set guioptions-=m
set background=dark
let g:solarized_termcolors=256
colorscheme solarized
set autoindent
set smartindent
set cindent
set cinoptions=g0,:0,N-s,(0
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set smarttab
set number
set autoread
set completeopt=preview,menu
set autowrite
set magic
set noeb
set confirm
set nobackup
set noswapfile
set ignorecase
set linespace=0
set wildmenu
set backspace=2
set whichwrap+=<,>,h,l
set selection=exclusive
set selectmode=mouse,key
set report=0
set fillchars=vert:\ ,stl:\ ,stlnc:\
set showmatch
set matchtime=1
set scrolloff=3
set completeopt=longest,menu
set iskeyword+=.
" 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
nmap ,r :Ack
nmap ,wr :Ack <cword><CR>
" use 256 colors when possible
if (&term =~? \'mlterm\|xterm\|xterm-256\|screen-256\') || has(\'nvim\')
let &t_Co = 256
colorscheme darkblue
else
colorscheme delek
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
set history=1000
" 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>
" 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 = \'⚠\'
" Jedi-vim ------------------------------
" All these mappings work only for python code:
" Go to definition
let g:jedi#goto_command = \',d\'
" Find ocurrences
let g:jedi#usages_command = \',o\'
" Find assignments
let g:jedi#goto_assignments_command = \',a\'
" Go to definition in new tab
nmap ,D :tab split<CR>:call jedi#goto()<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 = 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._ = \'_\'
" 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 = 1
let g:airline_theme = \'luna\'
let g:airline#extensions#whitespace#enabled = 0
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#left_sep = \' \'
let g:airline#extensions#tabline#left_alt_sep = \'|\'
if !exists(\'g:airline_symbols\')
let g:airline_symbols = {}
endif