天天看點

vim程式設計插件

vim用法

建議使用vim7.0以上版本

設定tab的行為

通用設定

" Set 4 spaces per tab

set expandtab

set tabstop=4

set softtabstop=4

set shiftwidth=4

自動檢測源檔案的tab設定,并使用相同的配置

這個使用了插件系統,需要放到vundle的段落裡面,參見插件管理

" use tab or space according to contents.

Plugin 'conormcd/matchindent.vim'

設定leader

在~/.vimrc中設定leader的值

" Set map leader

let mapleader = ","

自動删除行尾空格

在~/.vimrc中增加如下配置:

" 去掉行尾空格

autocmd BufWritePre * :%s/\s\+$//e

插件管理

可以通過vundle插件來管理其他插件,使vim的配置維護更簡單。

下載下傳vundle

cd ~/.vim/bundle

git clone https://github.com/gmarik/Vundle.vim

在.vimrc中配置使用vundle

vim ~/.vimrc

輸入以下内容:

"------------------------------------------->

" Bundle begin

" ------------------------------------------>

filetype off                   " required!

set rtp+=~/.vim/bundle/Vundle.vim

call vundle#begin()

Plugin 'gmarik/Vundle.vim'

" add other plugin here

call vundle#end()            " required

" Enable file type plugin and indent

filetype plugin indent on

"-------------------------------------------<

" Bundle end

" ------------------------------------------<

儲存并退出

執行以下指令初始化插件

vim +PluginInstall +qall

到這裡,初始化完成,後續如果新增插件,還需要再次執行這個指令初始化新的插件。

用法:

安裝新插件::PluginInstall

更新插件::PluginUpdate

自動補全插件

采用YouCompleteMe插件來實作自動補全功能

在.vimrc配置中增加配置

" YCM for completions

Plugin 'Valloric/YouCompleteMe'

let g:ycm_confirm_extra_conf = 0

let g:ycm_filepath_completion_use_working_dir = 1

let g:ycm_key_list_select_completion = []

let g:ycm_key_list_previous_completion = []

let g:ycm_collect_identifiers_from_tags_files = 1

let g:ycm_filetype_whitelist = {'c': 1, 'cpp': 1, 'python': 1}

nnoremap <F4> :YcmDiags<CR>

nnoremap <F5> :YcmForceCompileAndDiagnostics<CR>

nnoremap <Leader>] :YcmCompleter GoTo<CR>

nnoremap <Leader>gh :YcmCompleter GoToInclude<CR>

nnoremap <Leader>gd :YcmCompleter GoToDefinition<CR>

nnoremap <Leader>gc :YcmCompleter GoToDeclaration<CR>

安裝插件

安裝cmake

安裝clang(3.8+)

安裝boost(1.49+)

編譯YouCompletMe

cd ~/.vim/bundle/YouCompleteMe

./install.py --clang-completer --system-libclang --system-boost

編寫.ycm_extra_conf.py

對于每個工程,都需要編寫一個.ycm_extra_conf.py,用于指導ycm如何編譯工程下的檔案。 SkybilityHA工程已經實作了該檔案,是以不需要做額外動作,hadm2目前還沒有這個檔案, 後續需要增加。

在., ->, ::後自動提示補全,通過ctrl + n, ctrl + p上下移動選擇,或繼續輸入減少篩選範圍。

在normal模式下,通過,]跳轉到定義的地方,如果找不到定義,跳轉到聲明的地方

在normal模式下,通過,gd跳轉到定義的地方 YCM隻能跳轉到本檔案中定義的函數,不能跳轉到别的檔案

對這種情況,一般這樣處理: ,] 跳轉到聲明處

* 選中光标下的函數名

:A跳轉到對應的.c或.cpp檔案

n找到定義的地方

或者使用ctags插件,用ctrl + ]跳轉

在normal模式下,通過,gc跳轉到聲明的地方

在normal模式下,通過,gh跳轉到所在行的頭檔案

git插件

git可以使用vim-fugitive這個插件來管理

修改~/.vimrc配置

Plugin 'tpope/vim-fugitive'

儲存退出

用法

這個插件功能很強大,通過:help fugitive檢視

最常用的是:Gblame檢視曆史記錄

ctags插件

使用ludovicchabant/vim-gutentags來管理工程中的tags。 這個插件會在項目的根目錄下生成tags檔案(根據.git目錄來識别)。

Plugin ’ludovicchabant/vim-gutentags‘

let g:gutentags_cache_dir = '/tmp/tags/'

安裝插件 在vim裡面執行下面三個指令:

:w

:so %

:PluginInstall

安裝ctags軟體exuberant-ctags

與YCM結合,YCM要求使用-l參數來識别tags所屬的語言,以實作更準确的比對。

echo 'fields+=-l' >> ~/.ctags

用法: ctrl + ]來跳轉到函數定義的地方

snippet插件

這是一個提高代碼效率的插件,在輸入關鍵字後,按tab鍵,可以将預定義的代碼片段補全出來, 使用者再根據自己的需要修改即可。

Plugin 'SirVer/ultisnips'

Plugin 'honza/vim-snippets'

let g:UltiSnipsSnippetDirectories=["UltiSnips", 'mysnips']

let g:snips_author = 'Songmin.Li (Li)'

let g:snips_email = '[email protected]'

let g:snips_github = ''

let g:snips_company = 'Skybility Software Co.,Ltd.'

姓名,郵箱根據實際情況替換

增加檔案頭的注釋的補全

1.建立mysnips目錄

mkdir ~/.vim/bundle/vim-snippets/mysnips

cd !$

2.在目錄下,增加補全檔案c.snippets

priority -40

snippet docs "file docs ..."

/**

  \file `!v expand('%:t')`

  \brief ${1}

  \author `!v g:snips_author`, `!v g:snips_email`

  \copyright Copyright (c) `!v strftime('%Y')`, `!v g:snips_company` All rights reserved.

 */

endsnippet

3.在目錄下,增加補全檔案python.snippets

"""

File: `!v expand('%:t')`

Author: `!v g:snips_author`

Email: `!v g:snips_email`

Copyright: Copyright (c) `!v strftime('%Y')`, `!v g:snips_company` All rights reserved.

Description: ${0}

輸入補全關鍵字, 按tab鍵

按ctrl + j跳到下一處修改點

按ctrl + k跳轉到上一處修改點

繼續閱讀