vim編程插件

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>



保存並退出



安裝插件

vim +PluginInstall +qall




安裝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'



保存退出



安裝插件

vim +PluginInstall +qall




用法


這個插件功能很強大,通過:help fugitive查看

最常用的是:Gblame查看歷史記錄



ctags插件


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


修改~/.vimrc配置

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鍵,可以將預定義的代碼片段補全出來, 用戶再根據自己的需要修改即可。


修改~/.vimrc配置

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.'


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

保存退出



安裝插件

vim +PluginInstall +qall




增加文件頭的註釋的補全


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

priority -40


snippet docs "file docs ..."

"""

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}

"""

endsnippet





用法:

輸入補全關鍵字, 按tab鍵

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

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

在~/.vim/bundle/vim-snippets/UltiSnips/目錄下查看支持的補全關鍵字

可以在~/.vim/bundle/vim-snippets/mysnips/下增加自定義的補全


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章