这应该是我用vim5年多以来第一次写关于vim配置的博客。按照惯例先来废话一堆。
首先vim这个东西在是啥就不用说了,用过的人都说好。其实编辑器和IDE是没法比的。在开发比较大的项目用IDE肯定是首选,但是平时写个脚本,小项目的话vim是首选。几乎不用鼠标的操作的,提高的开发效率,不止一点点。
强大的vim肯定少不了无数个插件的支撑,英文水平有限,外国人写的插件一般不能第一时间就看到,所以就是根据github上的项目整合了一下插件
废话不多说了,现在开始配置。
我把我配置好的项目丢到了码云上,(最近也github的网站特别慢。也是支持国产吗,毕竟这玩意是中文的)
这是链接地址 有兴趣可以去看看
git clone https://git.oschina.net/Appthanatos/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh
需要使用git的命令行工具执行上面命令。
下面我们介绍一下我用到的插件,
~/.vim_runtime/vimrcs 这个目录下是我们的配置文件
这是一个buffer的管理插件,vim自带的buffer功能达不到我们的要求
这个也不需要了解太多,知道他是干啥就行了,配置就根据项目里的配置就行
主要的用途就是:
let g:bufExplorerDefaultHelp=0 "关闭默认的帮助项
let g:bufExplorerShowRelativePath=1 "显示相对路径
let g:bufExplorerFindActive=1 "在选择时进入活动窗口
let g:bufExplorerSortBy='name' "设置使用名字的排序方式
map o :BufExplorer "使用 ",+o" 加o进入buffer窗口
如果不知道buffer是什么,自己百度一下吧。
显示最近打开的文件列表
let MRU_Max_Entries = 400 "设置默认记录的打开文件数量
map f :MRU " 定义快捷键打开 使用 (,f)
这是一个真的是个神奇,一个快速查找文件的插件
let g:ctrlp_working_path_mode = 0 "禁用自动设置工作目录
let g:ctrlp_map = '' " 使用ctrl+f 呼出列表
map j :CtrlP "使用 ,f 呼出列表
map :CtrlPBuffer
let g:ctrlp_max_height = 20 " 设置显示最多条数
let g:ctrlp_custom_ignore = 'node_modules\|^\.DS_Store\|^\.git\|^\.coffee' "忽略文件
用法:使用ctrl+f打开
使用,在提示符的历史记录中选择下一个/上一个字符串
还有很多用法详细的看官方文档吧
用于代码段补全,用法非常简单,输入一个 for然后tab 看效果就行了
显示目录树
let g:NERDTreeWinPos = "left" "出现在左侧
let NERDTreeShowHidden=1 "显示隐藏文件
let NERDTreeIgnore = ['\.pyc$', '__pycache__'] "忽略文件的显示
let g:NERDTreeWinSize=35 "打开的宽度
map nn :NERDTreeToggle "打开或关闭
map nb :NERDTreeFromBookmark
map nf :NERDTreeFind
显示git的文件状态
let g:NERDTreeIndicatorMapCustom = {
\ " Modified" : "✹",
\ "Staged" : "✚",
\ "Untracked" : "✭",
\ "Renamed" : "➜",
\ "Unmerged" : "═",
\ "Deleted" : "✖",
\ "Dirty" : "✗",
\ "Clean" : "✔︎",
\ "Unknown" : "?"
\ }
let g:multi_cursor_next_key="\"
使用
类似于 iawriter 这个样编写代码的形式,看个人喜好吧,可以用来装逼
let g:goyo_width=100
let g:goyo_margin_top = 2
let g:goyo_margin_bottom = 2
nnoremap z :Goyo
总所周知的代码语法检测插件
" Python
let g:syntastic_python_checkers=['pyflakes']
" Javascript
let g:syntastic_javascript_checkers = ['jshint']
" Go
let g:syntastic_auto_loc_list = 1
let g:syntastic_go_checkers = ['go', 'golint', 'errcheck']
" Custom CoffeeScript SyntasticCheck
func! SyntasticCheckCoffeescript()
let l:filename = substitute(expand("%:p"), '\(\w\+\)\.coffee', '.coffee.\1.js', '')
execute "tabedit " . l:filename
execute "SyntasticCheck"
execute "Errors"
endfunc
nnoremap c :call SyntasticCheckCoffeescript()
因为我平时用vim,就是写小的脚本项目,用的地方不多。可以自己根据自己的语言来配置
在git diff对比的时候,能显示更人性化的差异
let g:gitgutter_enabled=0
nnoremap d :GitGutterToggle
vim的各种状态栏美化插件
let g:airline_theme='molokai' "设置方案
let g:airline#extensions#tabline#enabled = 1 "开启tabline
set hidden
let g:airline#extensions#tabline#fnamemod = ':t'
let g:airline#extensions#tabline#show_tab_nr = 1
let g:airline_powerline_fonts = 1
目前市面上最强悍的补全插件了吧。我也是刚研究这个。一般不怎么用
let g:ycm_global_ycm_extra_conf='~/.vim_runtime/.ycm_extra_conf.py'
let g:ycm_python_binary_path = '/usr/bin/python3'
let g:ycm_min_num_of_chars_for_completion = 1
let g:ycm_autoclose_preview_window_after_completion=1
let g:ycm_complete_in_comments = 1 "注释中也进行补全
let g:ycm_seed_identifiers_with_syntax = 1 "开启语义不全
"leave '', '' for ultisnips
let g:ycm_key_list_select_completion = ['','', '']
" leave '' , '' for ultisnips
let g:ycm_key_list_previous_completion = [ '' , '' ]
let g:ycm_confirm_extra_conf = 0
" http://www.alexeyshmalko.com/2014/youcompleteme-ultimate-autocomplete-plugin-for-vim/
"let g:ycm_key_list_select_completion=[]
"let g:ycm_key_list_previous_completion=[]
let g:ycm_filetype_blacklist = {
\ 'tagbar' : 1,
\ 'qf' : 1,
\ 'notes' : 1,
\ 'markdown' : 1,
\ 'unite' : 1,
\ 'text' : 1,
\ 'vimwiki' : 1,
\ 'pandoc' : 1,
\ 'infolog' : 1,
\ 'mail' : 1
\}
let g:ycm_semantic_triggers = {
\ 'c' : ['->', '.'],
\ 'objc' : ['->', '.'],
\ 'ocaml' : ['.', '#'],
\ 'cpp,objcpp' : ['->', '.', '::'],
\ 'perl' : ['->'],
\ 'php' : ['->', '::'],
\ 'cs,java,javascript,d,python,perl6,scala,vb,elixir,go' : ['.'],
\ 'vim' : ['re![_a-zA-Z]+[_\w]*\.'],
\ 'ruby' : ['.', '::'],
\ 'lua' : ['.', ':'],
\ 'erlang' : [':'],
\}
autocmd FileType php,phtml setlocal omnifunc=phpcomplete#CompletePHP
autocmd FileType css,less setlocal omnifunc=csscomplete#CompleteCSS
autocmd FileType html,tpl,markdown setlocal omnifunc=htmlcomplete#CompleteTags
autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
需要编译安装的。我的系统是mac 我就是这样执行的, 如果你是别的系统可以去看看官网怎么装的。也可以选择不装
cd .vim_runtime/bundle/YouCompleteMe
./install.py --all
vim 最终的片段补全插件。整合之前的许多插件
let g:UltiSnipsExpandTrigger = ""
let g:ulti_expand_or_jump_res = 0
function ExpandSnippetOrCarriageReturn()
let snippet = UltiSnips#ExpandSnippetOrJump()
if g:ulti_expand_or_jump_res > 0
return snippet
else
return "\"
endif
endfunction
inoremap pumvisible() ? "=ExpandSnippetOrCarriageReturn()" : "\"