强大的vim配置 (YouCompleteMe)

这应该是我用vim5年多以来第一次写关于vim配置的博客。按照惯例先来废话一堆。
首先vim这个东西在是啥就不用说了,用过的人都说好。其实编辑器和IDE是没法比的。在开发比较大的项目用IDE肯定是首选,但是平时写个脚本,小项目的话vim是首选。几乎不用鼠标的操作的,提高的开发效率,不止一点点。
强大的vim肯定少不了无数个插件的支撑,英文水平有限,外国人写的插件一般不能第一时间就看到,所以就是根据github上的项目整合了一下插件

废话不多说了,现在开始配置。

安装

我把我配置好的项目丢到了码云上,(最近也github的网站特别慢。也是支持国产吗,毕竟这玩意是中文的)
这是链接地址 有兴趣可以去看看

Mac、linux 安装

git clone https://git.oschina.net/Appthanatos/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh

windows安装

需要使用git的命令行工具执行上面命令。

安装一般很简单。重要的是用对吧,来一个经典的键位图
强大的vim配置 (YouCompleteMe)_第1张图片

下面我们介绍一下我用到的插件,
~/.vim_runtime/vimrcs 这个目录下是我们的配置文件

  • basic.vim 基本的vim配置
  • plugins.vim 插件列表
  • plugins_config.vim. 插件的配置
  • filetypes.vim 文件类型的设置
  • extended.vim 扩展配置
    我们只需要懂的是前三个配置文件就足够。后两个几乎也用不到那么多语言

bufExplorer 主页

这是一个buffer的管理插件,vim自带的buffer功能达不到我们的要求
这个也不需要了解太多,知道他是干啥就行了,配置就根据项目里的配置就行

主要的用途就是:

  1. 使用 h/j/k/l 在buffer中移动
  2. 使用 t 能把光标所在行的文件在新的tab中打开
let g:bufExplorerDefaultHelp=0 "关闭默认的帮助项
let g:bufExplorerShowRelativePath=1 "显示相对路径
let g:bufExplorerFindActive=1 "在选择时进入活动窗口
let g:bufExplorerSortBy='name' "设置使用名字的排序方式
map o :BufExplorer "使用 ",+o" 加o进入buffer窗口

如果不知道buffer是什么,自己百度一下吧。

MRU 主页

显示最近打开的文件列表

let MRU_Max_Entries = 400  "设置默认记录的打开文件数量
map f :MRU "定义快捷键打开 使用 (,f)

CTRL-P 主页

这是一个真的是个神奇,一个快速查找文件的插件

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打开

  • 按清除当前目录的缓存以获取新文件
  • 使用,或箭头键来浏览结果列表
  • 使用,在提示符的历史记录中选择下一个/上一个字符串

    还有很多用法详细的看官方文档吧

snipMate 主页

用于代码段补全,用法非常简单,输入一个 for然后tab 看效果就行了

Nerd Tree 主页

显示目录树

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"   : "?"
    \ }

vim-multiple-cursors 主页

类似于 Sublime Text 的多行同时编
强大的vim配置 (YouCompleteMe)_第2张图片

let g:multi_cursor_next_key="\"

使用

  • 按下V选中整行
  • 按下G到达末行
  • 按下 然后 i 进入编辑模式 尽情的玩吧

Goyo 主页

类似于 iawriter 这个样编写代码的形式,看个人喜好吧,可以用来装逼

let g:goyo_width=100
let g:goyo_margin_top = 2
let g:goyo_margin_bottom = 2
nnoremap  z :Goyo

Syntastic 主页

总所周知的代码语法检测插件

" 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,就是写小的脚本项目,用的地方不多。可以自己根据自己的语言来配置

vim-gitgutter 主页

在git diff对比的时候,能显示更人性化的差异

let g:gitgutter_enabled=0
nnoremap  d :GitGutterToggle

vim-airline 主页

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

YouCompleteMe 主页

目前市面上最强悍的补全插件了吧。我也是刚研究这个。一般不怎么用

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

ultisnips 主页

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()" : "\"

你可能感兴趣的:(个人随笔,vim,ide)