標籤:messages 相關 ret href out features tty 不同 測試
在之前的部落格中介紹了如何在Ubuntu16上使用vim建立C++開發環境:
Linux基礎12Building a C/C++ IDE with vim
本部落格將介紹如何在CentOS7上使用vim建立類似的C++開發環境。兩套環境的建立思路是類似的,就是使用vim強大的外掛程式擴充功能,不同之處在於Ubuntu上使用的外掛程式管理器是vim-addon-manager,而CentOS7上使用的是VBundle作為外掛程式管理器。VBundle的特色在於外掛程式的自動安裝和更新,這些外掛程式一般存放在github上。
本部落客要參考了以下部落格的部分內容:
https://www.cnblogs.com/hugb/p/7450845.html
75331822
1.安裝vim8.0
從github上下載vim原始碼。
git clone https://github.com/vim/vim.git
編譯:
./configure --prefix=/opt/test/ --with-features=huge -enable-pythoninterp --with-python-config-dir=/usr/lib/python2.7/config --enable-cscope
make all doc info
此處在編譯doc時存在一些編譯錯誤,可以忽略。
安裝到指定的目錄:
make install
查看版本號碼:
[[email protected] install]$ vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Apr 14 2018 06:54:13)
包含補丁: 1-1704
[此處省略若干細節]
2.建立.vimrc檔案,內容如下:
1 cat .vimrc 2 set nocompatible 3 filetype off 4 5 set rtp+=~/.vim/bundle/Vundle.vim 6 call vundle#begin() 7 8 Plugin ‘gmarik/Vundle.vim‘ 9 Plugin ‘bling/vim-airline‘ 10 Plugin ‘scrooloose/nerdtree‘ 11 Plugin ‘kien/ctrlp.vim‘ 12 Plugin ‘taglist.vim‘ 13 Plugin ‘Valloric/YouCompleteMe‘ 14 Plugin ‘winmanager‘ 15 Plugin ‘gdbmgr‘ 16 17 call vundle#end()18 19 20 filetype plugin indent on 21 22 " Brief help23 " :PluginList - lists configured plugins24 " :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate25 " :PluginSearch foo - searches for foo; append `!` to refresh local cache26 " :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal27 "28 29 filetype plugin indent on30 31 let g:ycm_global_ycm_extra_conf=‘~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py‘32 let g:ycm_seed_identifiers_with_syntax=133 let g:ycm_confirm_extra_conf=034 let g:ycm_cache_omnifunc=035 let g:ycm_min_num_of_chars_for_completion=2 36 let g:ycm_complete_in_comments=137 let g:ycm_complete_in_strings=138 39 40 set nocompatible41 source $VIMRUNTIME/vimrc_example.vim42 source $VIMRUNTIME/mswin.vim43 behave mswin44 set nobackup45 set diffexpr=MyDiff()46 function MyDiff()47 let opt = ‘-a --binary ‘48 if &diffopt =~ ‘icase‘ | let opt = opt . ‘-i ‘ | endif49 if &diffopt =~ ‘iwhite‘ | let opt = opt . ‘-b ‘ | endif50 let arg1 = v:fname_in51 if arg1 =~ ‘ ‘ | let arg1 = ‘"‘ . arg1 . ‘"‘ | endif52 let arg2 = v:fname_new53 if arg2 =~ ‘ ‘ | let arg2 = ‘"‘ . arg2 . ‘"‘ | endif54 let arg3 = v:fname_out55 if arg3 =~ ‘ ‘ | let arg3 = ‘"‘ . arg3 . ‘"‘ | endif56 let eq = ‘‘57 if $VIMRUNTIME =~ ‘ ‘58 if &sh =~ ‘\<cmd‘59 let cmd = ‘""‘ . $VIMRUNTIME . ‘\diff"‘60 let eq = ‘"‘61 else62 let cmd = substitute($VIMRUNTIME, ‘ ‘, ‘" ‘, ‘‘) . ‘\diff"‘63 endif64 else65 let cmd = $VIMRUNTIME . ‘\diff‘66 endif67 silent execute ‘!‘ . cmd . ‘ ‘ . opt . arg1 . ‘ ‘ . arg2 . ‘ > ‘ . arg3 . eq68 endfunction69 set nu!70 colorscheme desert 71 syntax enable 72 syntax on73 74 set encoding=utf-875 set fileencodings=utf-8,chinese,latin-176 if has("win32")77 set fileencoding=chinese78 else79 set fileencoding=utf-880 endif81 source $VIMRUNTIME/delmenu.vim82 source $VIMRUNTIME/menu.vim83 language messages zh_CN.utf-884 85 86 let g:NERDTreeWinPos="left"87 let g:NERDTreeWinSize=2588 let g:NERDTreeShowLineNumbers=189 let g:neocomplcache_enable_at_startup = 1 90 91 au GUIEnter * simalt ~x92 93 map <F2> :NERDTreeToggle <CR>94 95 let NERDTreeShowBookmarks=1
3.安裝VBundle外掛程式管理器。
建立.vim以及VBundle的相關目錄。
mkdir -p ./.vim/bundle
下載VBundle外掛程式管理器。
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
下載和安裝外掛程式。
主要使用VBundle的自動下載安裝功能。
啟動vim 8.0。
系統預設安裝的vim程式是/usr/bin/vim,版本為7.x。可以在/usr/local/bin目錄建立一個軟連結,此目錄排在PATH環境變數的比較靠前的位置,因此可以覆蓋預設的vim程式,達到執行vim就啟動vim 8.0的目的。
啟動vim之後,在vim中執行以下命令,安裝在.vimrc中配置的外掛程式。
:PluginInstall
安裝完成後vim顯示Done。
4.使用NERDTree分類樹外掛程式。
按F2啟動NERDTree分類樹外掛程式。 可以看到這個vim已經具備了類似Eclipse下的自動編譯功能,可以自動檢測到C/C++代碼的編譯錯誤(分割欄中的紅色>>符號,下面中46行和47行有兩個參數未使用的錯誤)。
5.使用YouCompleteMe外掛程式。
這個外掛程式用於實現自動補全功能。
在VBundle自動下載之後,還需要人工執行以下操作:
(1)安裝cmake.
sudo yum install cmake
(2)執行下面的安裝指令碼:
./install.py --clang-completer
安裝成功之後效果如下:
6.使用gdbmgr外掛程式。
gdbmgr外掛程式用於在vim中使用gdb來進行程式的調試。gdbmgr整合了常見的調試視窗,使用起來比gdb的layout命令更加方便和直觀。
(1)gdbmgr下載。
git clone https://github.com/vim-scripts/gdbmgr.git
也可以在以下地址下載:
https://www.vim.org/scripts/download_script.php?src_id=18153
(2)gdbmgr編譯。
ls ${HOME}/.vim/bundle/gdbmgr/gdbmgr/src
gdbmgr.c gdbmgr.h gdbmgr.o gdbmgr.so Makefile Makefile.mac
執行make進行編譯。
(3)在.vimrc檔案中啟用gdbmgr的外掛程式。
參考前面.vimrc檔案中Plugin gdbmgr行的內容。
(4)測試gdbmgr。
先將${HOME}/.vim/bundle/gdbmgr/gdbmgr/src這個路徑加入LD_LIBRARY_PATH變數,以便系統能夠找到gdbmgr.so這個動態庫。
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${HOME}/.vim/bundle/gdbmgr/gdbmgr/src/
再將${HOME}/.vim/bundle/gdbmgr/gdbmgr/progs目錄中的例子代碼編譯完畢。
cd到這個目錄之後,執行vim。
執行:DI命令(Debugger Initial,調試器初始化)。
並沒有自動出現預期的調試介面,主要問題是沒有載入原始碼和可執行檔。
解決辦法:將當前路徑(.)加入PATH變數。
export PATH=${PATH}:.
再次啟動vim並執行:DI命令,可以看到代碼和程式已經被成功載入,預設載入prog01和prog01.c。
執行:DR命令運行被偵錯工具prog01,可以設定斷點,查看變數或運算式的值,設定watachpoints,以及觀察調用棧等。
至此,一個CentOS7系統下的基於vim的C++ IDE環境建立完畢。
Linux基礎15:在CentOS7上使用vim建立C++開發環境