【Linux】【开发环境】【RHEL】开发环境搭建系列之十一——Linux系统下搭建基于vim的C/C++ IDE开发环境
環(huán)境
- vim:8.2
- RedHat:Red Hat Enterprise Linux Server release 7.7 (Maipo)
- plug.vim
vim管理的基礎(chǔ)
.vimrc,vim配置文件
- Vim 啟動(dòng)時(shí),會(huì)根據(jù)配置文件(.vimrc)來設(shè)置 Vim,因此我們可以通過此文件來定制適合自己的 Vim。
- Vim 配置文件分為系統(tǒng)配置文件和用戶配置文件:
– 系統(tǒng)配置文件位于 Vim 的安裝目錄(默認(rèn)路徑為 /etc/.vimrc);
– 用戶配置文件位于主目錄 ~/.vimrc,即通過執(zhí)行 vim ~/.vimrc 命令即可對此配置文件進(jìn)行合理修改。通常情況下,Vim 用戶配置文件需要自己手動(dòng)創(chuàng)建。
– Vim 用戶配置文件比系統(tǒng)配置文件的優(yōu)先級高。 - vim配置文件除了做一些全局配置外,如編碼格式(fileencodings)、行號(number)等外,還可配置vim插件的情況;
.vim目錄
- vim插件安裝之后,在用戶目錄之下的.vim文件夾之下有了相應(yīng)的插件所對應(yīng)的文件夾,每一個(gè)文件夾下面或者是子文件夾之下都存在一個(gè) xxx.vim的文件;xxx.vim文件的本質(zhì)就是腳本,因此在啟動(dòng)vim的時(shí)候會(huì)加載這些腳本文件,正是這些腳本的存在,才讓我們可以自定義vim;
- vim的插件的本質(zhì)是腳本
- Vim啟動(dòng)時(shí)或加載緩沖區(qū)時(shí)會(huì)遍歷“runtimepath”。該設(shè)置是一組以逗號分隔的目錄列表,各個(gè)目錄的結(jié)構(gòu)都是一致的。Vim會(huì)檢查每個(gè)目錄的結(jié)構(gòu),找到需要運(yùn)行的腳本,并按照目錄在列表中的順序一一處理,其中就包括.vim文件夾;
- 在我自己環(huán)境上執(zhí)行的例子:
- vim 自身是通過在 .vim/ 目錄中預(yù)定義的子目錄管理所有插件;
vim插件管理機(jī)制
傳統(tǒng)的vim plug管理方式
- 安裝:
要安裝一個(gè)插件,首先要從網(wǎng)絡(luò)上下載下來,然后解壓、并放在~/.vim/下合適的目錄中,如plugin、syntax、ftplugin等。 - 升級:
經(jīng)常使用的一些插件,可能需要過一段時(shí)間去vim.org上面看看有沒有新的版本,如果有的話,使用和安裝相同的方式來解壓覆蓋,從而完成更新工作。 - 卸載:
相對于安裝和更新,這個(gè)就比較麻煩了,尤其是你有太多的插件的話,你無法確定某個(gè)插件到底安裝了哪些文件,最壞的情況下,你可能需要下載一個(gè)原始版本來做參考,然后從你的~/.vim/目錄中把它們刪除干凈。 - 多臺(tái)電腦保持同步:
通常的方法是把原來的~/.vim目錄做個(gè)備份,然后在需要的時(shí)候把它整個(gè)復(fù)制過去。時(shí)間長了,這會(huì)產(chǎn)生問題,如果兩臺(tái)電腦中都做了修改(分別安裝了不同的插件或更新了某個(gè)插件),這時(shí)將無法準(zhǔn)確的保持同步。
新vim插件管理方式
- 借助第三方插件管理軟件,如vim-plug、vundle等,自動(dòng)維護(hù)(安裝、卸載、更新等).vim目錄下的不同插件;
使用vim-plug來安裝管理相關(guān)插件
下載vim-plug
# 法1 cd ~/.vim/autoload || mkdir ~/.vim/autoload && cd ~/.vim/autoload &&wget plug.vim https://github.com/junegunn/vim-plug/blob/master/plug.vim # 法2 cd ~/.vim/autoload || mkdir ~/.vim/autoload && curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vimplug.vim中的注釋,有vim-plug的用法說明,可參考: vim ~/.vim/autoload/plug.vim
在.vimrc中配置vim-plug部分
sudo vim ~/.vimrc #加入下面兩行: call plug#begin('~/.vim/plugged') call plug#end().vimrc文件中配置插件(以Nerdtree為例來說明)
- 找到對應(yīng)插件的github地址,如nerdtree的為:
https://github.com/scrooloose/nerdtree
- 在.vimrc中,call plug#begin()和call plug#end()之間加入需要安裝的插件
scrooloose/nerdtree和github的路徑是對應(yīng)的,后面安裝的時(shí)候,會(huì)自動(dòng)到github上去下載相應(yīng)插件。
使 .vimrc配置生效
通過輸入以下命令重新加載:
:source ~/.vimrc或重新加載 Vim 編輯器。
使用vim-plug安裝vim插件
:PlugStatus #查看插件狀態(tài); :PlugInstall #安裝所有插件(如果僅需安裝某個(gè)插件,后面接插件名即可);安裝之后,可以查看下.vim目錄的整體布局:
[qxhgd@localhost .vim]$ tree ├── autoload │ └── plug.vim └── plugged└── nerdtree├── autoload│ ├── nerdtree│ │ └── ui_glue.vim│ └── nerdtree.vim├── CHANGELOG.md├── _config.yml├── doc│ ├── NERDTree.txt│ └── tags├── lib│ └── nerdtree│ ├── bookmark.vim│ ├── creator.vim│ ├── event.vim│ ├── flag_set.vim│ ├── key_map.vim│ ├── menu_controller.vim│ ├── menu_item.vim│ ├── nerdtree.vim│ ├── notifier.vim│ ├── opener.vim│ ├── path.vim│ ├── tree_dir_node.vim│ ├── tree_file_node.vim│ └── ui.vim├── LICENCE├── nerdtree_plugin│ ├── exec_menuitem.vim│ ├── fs_menu.vim│ └── vcs.vim├── plugin│ └── NERD_tree.vim├── README.markdown├── screenshot.png└── syntax└── nerdtree.vim11 directories, 29 files使用vim-plug卸載vim插件
- 在.vimrc注掉或刪除之前注冊應(yīng)插件的plug 命令;
- 運(yùn)行:source ~/.vimrc 或重啟 Vim 編輯器;
- 執(zhí)行:PlugClean即可;
使用vim-plug更新vim插件
- 執(zhí)行:PlugUpdate即可(如果需要更新某個(gè)插件,后面接插件名即可);
操作/使用vim插件的幾種方式
- vimrc中注冊插件時(shí)候的配置插件的選項(xiàng):
- 在vimrc文件中增加配某插件相關(guān)的配置
- 在vim中直接輸入插件相關(guān)命令
| :NERDTree | 打開目錄樹 |
| :NERDTreeClose | 關(guān)閉目錄樹 |
| :NERDTreeToggle | 打開/關(guān)閉目錄樹 |
| :NERDTreeFind | 打開目錄樹并定位到當(dāng)前文件 |
- 快捷鍵
相關(guān)管理插件/插件匯總
vim管理插件發(fā)展史
2006年3月- 2014年7月:Vimball(分發(fā)格式和關(guān)聯(lián)的Vim命令)
2008年10月- 2015年12月:Pathogen(由于原生vim包被棄用)
2009年8月- 2009年12月:Vimana
2009年12月- 2014年12月:VAM
2010年8月 - 2010年12月:Jolt
2010年10月 - 2012年12月:tplugin
2010年10月 - 2014年2月:Vundle(在NeoBundle破解代碼后停止使用)
2012年3月 - 2018年3月:vim-flavor
2012年4月 - 2016年3月:NeoBundle(被棄用,建議使用dein)
2013年1月 - 2017年8月:infect
2013年2月 - 2016年8月:vimogen
2013年10月 - 2015年1月:vim-unbundle
2013年12月 - 2015年7月:Vizardry
2014年2月 - 2018年10月:vim-plug
2015年1月 - 2015年10月:enabler
2015年8月 - 2016年4月:Vizardry 2
2016年1月 - 2018年6月:dein.vim
2016 年 12 月-至今,spacevim
2016年9月 - 至今:原生Vim 8
2017年2月 - 2018年9月:minpac
2018年3月 - 2018年3月:autopac
2017年2月 - 2018年6月:pack
2017年3月 - 2017年9月:vim-pck
2017年9月 - 2017年9月:vim8-pack
2017年9月 - 2019年5月:volt
2018年9月 - 2019年2月:vim-packager
2019年2月 - 2019年2月:plugpac.vim
…
常用插件
智能補(bǔ)全類
- YouCompleteMe,大名鼎鼎的YCM,它是?個(gè)快速、即輸即查、模糊搜索的Vim代碼完成引擎。它實(shí)際上有好?個(gè)完成引擎組成:
- deoplete.nvim,是一款自動(dòng)補(bǔ)全的引擎,具體對某種編程語言的自動(dòng)補(bǔ)全支持,要安裝對應(yīng)的source 才能真正工作;
- coc.nvim,其本身并不具備代碼補(bǔ)全功能,要想完成代碼補(bǔ)全,還需安裝其他相應(yīng)語言的 LSP 插件。因此 coc.nvim其實(shí)是一個(gè)能加載其他插件的 Vim 插件;
- neocomplete,為 vim 提供智能提示功能,將 vim 改造成強(qiáng)大的IDE;
- nerdcommenter,Vim 下高效率添加注釋(或取消注釋)的插件;
文件管理類
- nerdtree,列出當(dāng)前路徑的目錄樹,一般IDE都是有的。可以方便的瀏覽項(xiàng)目的總體的目錄結(jié)構(gòu)和創(chuàng)建刪除重命名文件或文件名;
- winmanager是vim下管理窗口的插件,整合了nerdtree和taglist,可以管理文件瀏覽器、緩沖區(qū)、taglist等窗口;
符號及跳轉(zhuǎn)類
- CTAGS,掃描指定的源文件,找出其中所包含的語法元素,并將找到的相關(guān)內(nèi)容記錄下來,有Universal Ctags,Exuberant-ctags等;
- GTAGS(GNU GLOBAL)是一套源代碼標(biāo)記系統(tǒng),使用它可以定位數(shù)據(jù)結(jié)構(gòu),函數(shù),宏等等,并且可以方便地跳轉(zhuǎn);
- CSCOPE是類似于ctags一樣的工具,但可以認(rèn)為它是ctags的增強(qiáng)版,因?yàn)樗萩tags能夠做更多的事,還可以用來代碼查找和定位代碼。GTAGS和 CSCOPE、CTAGS功能有部分重疊的地方,一般使用CTAGES/GTAGS生成代碼符號數(shù)據(jù)庫,使用CSCOPE命令來實(shí)現(xiàn)快捷地跳轉(zhuǎn);
- taglist,支持taglist窗口,從中可以看到在c文件中定義的所有tag,如宏、定義、變量、函數(shù)等;也可以雙擊某個(gè)tag,跳到該tag定義的位置;還可以把某一類的tag折疊起來;
代碼搜索類
- RP(rip grep):增強(qiáng)grep來實(shí)現(xiàn)文本搜索的工具,特點(diǎn)就是速度非常快;
- Fzf(fuzzy finder):模糊查找的工具,其優(yōu)點(diǎn)是用戶可以不用記住精確的信息就可以查到對應(yīng)的代碼;
- ctrlp是一款支持對文件、緩沖區(qū)( :CtrlPBuffer )、MRU(Most Recently Used)文件( :CtrlPMRU )和標(biāo)簽進(jìn)行模糊搜索/查找的Vim插件;
實(shí)際應(yīng)用時(shí),可根據(jù)需要自由組合,如Vim+Cscope+Gtags+YouCompleteMe+Rg+Fzf這種。
vim相關(guān)命令
vim安裝相關(guān)
# 0-查看vim版本: vim --version | head -n 1 #1 vim的升級 # 1.1 從源碼升級vim版本: yum install ncurses-devel wget https://github.com/vim/vim/archive/master.zip unzip master.zip cd vim-master cd src/ ./configure make sudo make install vim vim --version # 查看當(dāng)前版本# 1.2 yum升級vim版本到最新: sudo yum update -y vim* #實(shí)驗(yàn)證明無法升到vim8vim環(huán)境相關(guān)操作
- vim環(huán)境的命令
- vim插件的runtimepath的內(nèi)容說明
vim-plug相關(guān)命令
:PlugStatus #查看插件狀態(tài); :PlugInstall #安裝插件; :PlugUpdate #更新插件; :PlugClean #刪除插件,之前配合vimrc注掉或刪除對應(yīng)plug 命令。然后,運(yùn)行:source ~/.vimrc 或重啟 Vim 編輯器,最后執(zhí)行PlugClean即可; :PlugUpgrade #升級vim-plug本身參考資料
- vim.org
- vim
- vimawesome
- neovim
- spacevim
- vim-plug
- Vundle
- 24.3k star的vimrc配置
- use_vim_as_ide
- 你真的會(huì)裝vim插件嗎?【vim-plug】詳解
- 使用Vim-plug作為Vim 插件管理器
- vimjc
- vim-directory-structure
如本文對你有些許幫助,歡迎大佬打賞:
支付寶及微信打賞方式
總結(jié)
以上是生活随笔為你收集整理的【Linux】【开发环境】【RHEL】开发环境搭建系列之十一——Linux系统下搭建基于vim的C/C++ IDE开发环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ccc
- 下一篇: 你画我猜 计算机题目,你画我猜题目带图答