Vim相關設置

概 述

以前一直是在win下開發(fā)瘩例,最近也是開始嘗試在Linux下寫代碼,整理了下vim的相關配置,能讓vim使用的舒服一些混萝。

實 現(xiàn)

vim的相關設置在~/.vimrc嘹吨,文件不存在的話搬味,可以自行創(chuàng)建并添加需要的設置。
一蟀拷、中文設置
如果使用vim出現(xiàn)中文亂碼的情況碰纬,添加如下設置

" 中文設置                                                                                             
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8

保存退出后,重新打開文件即可问芬。

二悦析、個性設置
vim可以添加很多個性化設置,這里列下我自己使用的

set wrap            " 長行自動折行
set nocompatible    " 關閉vi兼容
set autoindent      " 自動對齊
set smartindent     " 智能對齊方式
set ai!             " 自動縮進  
set cindent         " 以c/c++的模式縮進
set number          " 顯示行號
set cursorline      " 突出顯示當前行
set tabstop=4       " 設置Tab長度
set softtabstop=4   " 設置退格鍵長度
set shiftwidth=4    " 設置當行之間交錯時使用4個空格
set showmatch       " 括號匹配
syntax on           " 語法高亮

" 括號自動補全
inoremap ( ()<ESC>i
inoremap [ []<ESC>i
inoremap { {<CR>}<ESC>kA<CR>

三此衅、配色設置
vim支持不同的顯示配色風格强戴,默認支持的配色風格可以在/usr/share/vim/vimXX/colors(/vimXX對應vim的版本)目錄下。.vim后綴的文件就是配色文件炕柔。
我們可以在vim模式下酌泰,使用如下命令來臨時使用配色:

:colorscheme default

也可以在.vimrc中添加如下設置來全局使用配色:

colorscheme default

default可以替換為任意已有配色的文件名。
此外匕累,我們還可以使用其他自定義配色陵刹,例如molokaigruvbox等等欢嘿。
molokai為例衰琐,先下載好配色文件(這里貼下github地址),復制到上文提到的目錄下即可通過colorscheme來設置炼蹦。

說明:

  1. 一些配色支持深色/淺色模式羡宙,只需將背景設置為適當?shù)闹担?/li>
set background=dark    " Setting dark mode
set background=light   " Setting light mode
  1. 開啟真彩色設置
set termguicolors

四、代碼補全
使用vim來寫C++的時候掐隐,可以使用omnicppcomplete來實現(xiàn)代碼補全狗热。具體實現(xiàn)如下:
1. ctags安裝
我們需要通過ctags來生成C++提示文件钞馁,安裝命令:

sudo apt-get install ctags

2. 生成提示文件
這里需要cpp源碼來生成,vim官網(wǎng)有提供針對ctags修改過的源碼下載以及生成文檔匿刮,地址僧凰。
下載解壓后,執(zhí)行

ctags -R --c++-kinds=+pl --fields=+iaS --extra=+q --language-force=C++ ./cpp_src

最后的./cpp_src就是源碼解壓后的路徑熟丸,具體的參數(shù)說明可以參考官方文檔训措。
執(zhí)行后,在當前目錄下會生成一個名為tags的文件光羞,后面會用到它绩鸣。

3. omnicppcomplete安裝
在vim官網(wǎng)下載 omnicppcomplete-0.41.zip下載地址纱兑。解壓到~/.vim目錄下呀闻,如果沒有.vim文件夾就自行創(chuàng)建一下。

4. .vimrc文件設置
~/.vim目錄下創(chuàng)建一個tags目錄并將【2】生成的文件移動到~/.vim/tags目錄下(這里建議改名為cpp萍启,方便識別)

mv tags ~/.vim/tags/cpp

~/.vimrc文件中添加如下設置:

set nocp
filetype plugin indent on

" configure tags - add additional tags here or comment out not-used ones
set tags+=~/.vim/tags/cpp
" build tags of your own project with Ctrl-F12
map <C-F12> :!ctags -R --sort=yes --c++-kinds=+pl --fields=+iaS --extra=+q .<CR>

" OmniCppComplete
let OmniCpp_NamespaceSearch = 1 
let OmniCpp_GlobalScopeSearch = 1 
let OmniCpp_ShowAccess = 1 
let OmniCpp_ShowPrototypeInAbbr = 1 " show function parameters
let OmniCpp_MayCompleteDot = 1 " autocomplete after .
let OmniCpp_MayCompleteArrow = 1 " autocomplete after ->
let OmniCpp_MayCompleteScope = 1 " autocomplete after ::
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" automatically open and close the popup menu / preview window
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview

說明:

  • set nocp:vim在不兼容模式下工作总珠,即不兼容vi
  • filetype plugin indent on:開啟文件類型識別
    如果不設置,vim可能會無法識別cpp文件而無法提示補全
  • set tags+=~/.vim/tags/cpp:設置提示文件路徑
    也可以是其他路徑勘纯,只要確保和提交文件所在目錄一致即可
  • map <C-F12> :!ctags -R --sort=yes --c++-kinds=+pl --fields=+iaS --extra=+q .<CR>
    正常補全只能提示C++原有的內(nèi)容局服,需要想要提示自己寫的相關類成員變量、成員函數(shù)等等驳遵。就需要添加此行設置淫奔。
    在vim模式下,通過Ctrl+F12就可以構建自己項目中的提示標簽堤结,快捷鍵也可以在map <XX>中自行設置唆迁。

剩下的就是OmniCppComplete自身的設置,這里不再贅述竞穷。
如果還有其他問題唐责,可以參考官方WIKI

最后瘾带,使用vim編輯CPP文件即可提示代碼補全鼠哥。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市看政,隨后出現(xiàn)的幾起案子朴恳,更是在濱河造成了極大的恐慌,老刑警劉巖允蚣,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件于颖,死亡現(xiàn)場離奇詭異,居然都是意外死亡嚷兔,警方通過查閱死者的電腦和手機森渐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門做入,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人章母,你說我怎么就攤上這事母蛛◆婕簦” “怎么了乳怎?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長前弯。 經(jīng)常有香客問我蚪缀,道長,這世上最難降的妖魔是什么恕出? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任询枚,我火速辦了婚禮,結果婚禮上浙巫,老公的妹妹穿的比我還像新娘金蜀。我一直安慰自己,他們只是感情好的畴,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布渊抄。 她就那樣靜靜地躺著,像睡著了一般丧裁。 火紅的嫁衣襯著肌膚如雪护桦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天煎娇,我揣著相機與錄音二庵,去河邊找鬼。 笑死缓呛,一個胖子當著我的面吹牛催享,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哟绊,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼因妙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了匿情?” 一聲冷哼從身側響起兰迫,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炬称,沒想到半個月后汁果,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡玲躯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年据德,在試婚紗的時候發(fā)現(xiàn)自己被綠了鳄乏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡棘利,死狀恐怖橱野,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情善玫,我是刑警寧澤水援,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站茅郎,受9級特大地震影響蜗元,放射性物質發(fā)生泄漏。R本人自食惡果不足惜系冗,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一奕扣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掌敬,春花似錦惯豆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至舀武,卻和暖如春拄养,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背银舱。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工瘪匿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寻馏。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓棋弥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诚欠。 傳聞我的和親對象是個殘疾皇子顽染,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容