Vim编辑器配置

安装 cmake

sudo apt-get install cmake

安装Vim

sudo apt-get install vim

vim 的配色最好和终端的配色保持一致

git clone git://github.com/altercation/solarized.git
$ cd solarized
$ cd vim-colors-solarized/colors
$ mkdir -p ~/.vim/colors
$ cp solarized.vim ~/.vim/colors/

$ vi ~/.vimrc
syntax on
set background=dark
colorscheme solarized

下载Vundle管理插件到目录

git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

安装Vundle插件,编辑~/.vimrc文件

set nocompatible              " required
filetype off                  " required
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'gmarik/Vundle.vim'
call vundle#end()            " required
filetype plugin indent on    " required
set nu
set mouse=a

vim 安装插件

$ vim           # 进入 vim 界面
:PluginInstall  # 进入安装
安装 YouCompleteMe

修改 .vimrc 文件,再次执行安装,在 call vundle#begin()call vundle#end() 中间添加一行

Plugin 'Valloric/YouCompleteMe'

安装出现错误,忽略,进行下一步,编译 YouCompleteMe --clang-completer 参数实现对 c/c++ 语法支持

cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer

YouCompleteMe 安装完成,再执行 :PluginInstall 就没有错误了

配置代码自动补全

设置全局配置文件路径 ~/.vimrc

let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

配置 .ycm_extra_conf.py

sudo apt-get install clang
echo | clang -v -E -x c++ -

将输出结果位于

#include "..." search starts here:
#include <...> search starts here:

End of search list.z
之间的部分添加到 .ycm_extra_conf.py 文件中
注意每条路径都要匹配一条语句 '-isyetem'

完善配置文件 .vimrc

"----------YouCompleteMe configuration---
set runtimepath+=~/.vim/bundle/YouCompleteMe "使用插件
let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' "指定全局配置文件路径
set completeopt=longest,menu    "让Vim的补全菜单行为与一般IDE一致
autocmd InsertLeave * if pumvisible() == 0|pclose|endif "离开插入模式后自动关闭预览窗口
"回车即选中当前项
inoremap <expr> <CR>       pumvisible() ? "\<C-y>" : "\<CR>"
"上下左右键的行为
inoremap <expr> <Down>     pumvisible() ? "\<C-n>" : "\<Down>"
inoremap <expr> <Up>       pumvisible() ? "\<C-p>" : "\<Up>"
inoremap <expr> <PageDown> pumvisible() ? "\<PageDown>\<C-p>\<C-n>":
inoremap <expr> <PageUp>   pumvisible() ? "\<PageUp>\<C-p>\<C-n>" : "\<PageUp>"
let g:ycm_key_list_select_completion = ['<Down>']
let g:ycm_key_list_previous_completion = ['<Up>']
let g:ycm_confirm_extra_conf=0 "关闭加载.ycm_extra_conf.py提示
let g:ycm_collect_identifiers_from_tags_files=1 " 开启 YCM 基于标签引擎
let g:ycm_min_num_of_chars_for_completion=2 " 从第2个键入字符就开始罗列匹配项
let g:ycm_cache_omnifunc=0  " 禁止缓存匹配项,每次都重新生成匹配项
let g:ycm_seed_identifiers_with_syntax=1    " 语法关键字补全
nnoremap <F5> :YcmForceCompileAndDiagnostics<CR>"force recomile with syntastic
inoremap <leader><leader> <C-x><C-o>
let g:ycm_complete_in_comments = 1 "在注释输入中也能补全
let g:ycm_complete_in_strings = 1 "在字符串输入中也能补全
let g:ycm_collect_identifiers_from_comments_and_strings = 1 "注释和字符串中的文字也会被收入补全
let g:clang_user_options='|| exit 0'
let g:ycm_goto_buffer_command = 'horizontal-split' "跳转到定义处,分屏打开
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR> " 跳转到定义处
let g:ycm_error_symbol = '>>' "错误提示符
let g:ycm_warning_symbol = '>*' "警告提示符

let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf = '~/.vim/plugged/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py'
" 让vim的补全菜单行为与一般IDE一致
set completeopt=longest,menu
" 触发(符号)补全时需要键入的字符数
let g:ycm_min_num_of_chars_for_completion = 1
" 补全候选项的最小字符数
let g:ycm_min_num_identifier_candidate_chars = 0
" 关闭诊断显示功能(已经使用了ale进行异步语法检查)
let g:ycm_show_diagnostics_ui = 0
" 在字符串和注释中仍会触发补全
let g:ycm_complete_in_comments = 1
let g:ycm_complete_in_strings = 1
" 禁止缓存匹配项,每次重新生成匹配项
let g:ycm_cache_omnifunc = 0
" 在用户接受提供的完成字符串后自动关闭窗口
let g:ycm_autoclose_preview_window_after_completion = 0
" 跳转到声明或定义处
nnoremap <silent><leader>gj :YcmCompleter GoToDefinitionElseDeclaration<cr>

" 自动触发语义补全
let g:ycm_semantic_triggers =  {
            \ 'c,cpp,python,java,go,erlang,perl': ['re!\w{1}'],
            \ 'cs,lua,javascript': ['re!\w{1}'],
            \ }
" 遇到下列文件时才会开启YCM
let g:ycm_filetype_whitelist = {
            \ "c":1,
            \ "cpp":1,
            \ "python":1,
            \ "sh":1,
            \ }

# 括号自动补全
Plugin 'jiangmiao/auto-pairs'

# 状态栏
Plugin 'Lokaltog/vim-powerline'

Plugin 'gmarik/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'
Plugin 'jiangmiao/auto-pairs'  " 括号自动补全
Plugin 'majutsushi/tagbar'     " 文件结构
Plugin 'scrooloose/nerdtree'   " 目录结构
Plugin 'scrooloose/syntastic'  " 语法检查
"------------------------------detail configruation--------------------------------
"set paste
"set selection=exclusive
"set selectmode=mouse,key
set cursorline            " 突出显示当前行
set tabstop=4	    	      " 设置Tab键的宽度        [等同的空格个数]
set softtabstop=4
set shiftwidth=4
set expandtab
"set autoread             " 文件修改之后自动载入

"---------NERDTree Configruation-----------------------------------
" open a NERDTree automatically when vim starts up
autocmd vimenter * NERDTree
"open a NERDTree automatically when vim starts up if no files were specified
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
"open NERDTree automatically when vim starts up on opening a directory
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists("s:std_in") | exe 'NERDTree' argv()[0] | wincmd p | ene | endif
"close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
let NERDTreeShowBookmarks=1 " 当打开 NERDTree 窗口时,自动显示 Bookmarks
let NERDTreeWinPos='right' "目录树在右边显示
let NERDTreeWinSize=30 "目录树的窗口宽度
"开启和关闭快捷键为F2 或者 直接输入命令:NERDTree
map <F2> :NERDTreeToggle<CR>

"---------Tagbar Configruation-------------
let g:tagbar_width=30
let g:tagbar_autofocus=1
let g:tagbar_left = 1
nmap <F3> :TagbarToggle<CR>

"-----Configuration for scrooloose/syntastic----------------
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0

函数跳转

Linux

sudo apt-get install ctags

MacOS

brew install ctags
brew install ctags-exuberant

代码自动格式化

vim-autoformat + astyle

安装 vim-autoformat

Plugin 'Chiel92/vim-autoformat'

astyle在线或者源码编译安装 make、make install

apt-get install astyle
利用 astyle 格式化
map <F4> :call FormatCode()<CR>
func! FormatCode()
    exec "w"
	if &filetype == 'C' || &filetype == 'h'
		exec "!astyle --style=allman --pad-oper %"
    elseif &filetype == 'cpp'
       	exec "!astyle --style=allman --pad-oper %"
    return
    endif
endfunc
利用 vim-autoformat 格式化,具体需要那种格式请看 astyle 文档
let g:formatdef_allman = '"astyle --style=allman --pad-oper"'
let g:formatters_cpp = ['allman']
let g:formatters_java = ['allman']
noremap <F5> :Autoformat<CR>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章