概 述
以前一直是在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
可以替換為任意已有配色的文件名。
此外匕累,我們還可以使用其他自定義配色陵刹,例如molokai
、gruvbox
等等欢嘿。
以molokai
為例衰琐,先下載好配色文件(這里貼下github地址),復制到上文提到的目錄下即可通過colorscheme
來設置炼蹦。
說明:
- 一些配色支持深色/淺色模式羡宙,只需將背景設置為適當?shù)闹担?/li>
set background=dark " Setting dark mode
set background=light " Setting light mode
- 開啟真彩色設置
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文件即可提示代碼補全鼠哥。