欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
把vim打造成牛逼的C++ IDE

對于windows上做C++開(kāi)發(fā)的用戶(hù)來(lái)說(shuō),vs為他們做了大量的工作,語(yǔ)法高亮、自動(dòng)縮進(jìn)、智能提示等等,當你happy的使用vs時(shí),請記住一點(diǎn),這是一個(gè)收費軟件,雖然在我大中華普遍都在使用微軟的盜版軟件,但作為程序員我們心里應該知道這是不對的行為,然后再去——等等,我們今天討論的不是這個(gè)話(huà)題,我們要說(shuō)的是Linux下的免費軟件vim!

vim插件安裝的教程在互聯(lián)網(wǎng)上已經(jīng)數不勝數,但是質(zhì)量也參差不齊,很多都是在其它地方轉載copy,而且沒(méi)有注明使用環(huán)境,很多人安裝時(shí)發(fā)現無(wú)法work,最后搞得一團糟,今天這篇文章的宗旨只有兩個(gè):1、使得安裝簡(jiǎn)單;2、保證可以用。

閱讀這篇文章的前提是你至少使用過(guò)vim,知道基本的操作。下面就開(kāi)始進(jìn)入主題。

準備工作

由于大多數vim插件都可以在github上找到,而且通過(guò)git安裝、刪除、升級插件都異常簡(jiǎn)單,因此我們需要首先安裝git工具,如果不知道git和github,可以先自行Google

centos安裝

sudo yum install git

ubuntu安裝

sudo apt-get install git

Mac安裝
由于Mac沒(méi)有像yum和apt-get一樣的包管理工具,需要先安裝一個(gè)類(lèi)似的包管理工具,這對于安裝一些Linux命令是非常有幫助的

  1. 安裝包管理工具homebrew
     ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
  2. 通過(guò)brew安裝git
     brew install git

我將本文需要安裝的插件和配置文件都放在了github上,如果你不想大費周折的了解每個(gè)插件的安裝方式,可以直接下載所有插件即可使用,項目地址https://github.com/handy1989/vim,可以按照如下命令備份并一次安裝所有插件(注意,從git上下載的vim目錄下都是隱藏文件,ls -a可以查看)

mv ~/.vimrc ~/.vimrcbakmv ~/.vim ~/.vimbakgit clone https://github.com/handy1989/vim.gitmv vim/.vimrc ~/.vim ~/

第一個(gè)插件pathogen

為了不讓插件安裝后目錄顯得凌亂,我們很有必要安裝一個(gè)管理插件的插件,這樣功能的插件有好幾個(gè),這里只推薦一個(gè)pathogen

項目地址
https://github.com/tpope/vim-pathogen

安裝
可以通過(guò)git安裝,也可以直接下載插件文件,由于這個(gè)插件只有一個(gè)文件,我們選擇后者,而該插件的說(shuō)明文檔上也是用的這種方法。

mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

然后,就沒(méi)有然后,這個(gè)插件就安裝完了。是不是覺(jué)得so easy! 不過(guò)先別急,我們還要對插件進(jìn)行一些配置,用vim打開(kāi)~/.vimrc,輸入如下三行類(lèi)容

execute pathogen#infect()syntax onfiletype plugin indent on

保存退出,這個(gè)插件的安裝配置就完成了,怎么驗證插件有沒(méi)有生效呢,別急,后面有的是機會(huì )驗證。我們先來(lái)講講vim插件是個(gè)什么東西。

此時(shí)你的~/.vim目錄結構應該是這樣的

├── autoload│   └── pathogen.vim└── bundle

可見(jiàn)~/.vim目錄下是有兩個(gè)目錄,其中autoload放的是pathogen插件,所謂的插件其實(shí)就是一個(gè)腳本,當vim啟動(dòng)時(shí),它會(huì )自動(dòng)加載~/.vim/autoload目錄下的腳本,由于你~/.vimrc里配置了execute pathogen#infect(),所以它會(huì )去自動(dòng)的執行腳本里這個(gè)函數,至于這個(gè)函數是怎么實(shí)現的,我們不用管它,總之這個(gè)函數的功能就是去加載~/.vim/bundle目錄下你安裝的所有插件,pathogen的管理方法大致就是這樣,而我們也看到,vim的插件其實(shí)就是一個(gè)腳本文件,豐富一點(diǎn)的還會(huì )帶有說(shuō)明文檔等其它內容,后面我們碰到了再講解。

auto-pairs

項目地址
https://github.com/jiangmiao/auto-pairs(感興趣的可以看)

功能
自動(dòng)匹配括號、引號等

安裝

git clone git://github.com/jiangmiao/auto-pairs.git ~/.vim/bundle/auto-pairs

這樣就將auto-pairs在github上的項目文件下載到了~/.vim/bundle/auto-pairs目錄下

測試
隨便打開(kāi)一個(gè)文件,輸入左括號'(',看右括號是不是自動(dòng)出現了,然后刪除左括號,看右括號是不是也被刪除了。當然功能遠不止這些,但常用的就這幾點(diǎn)。

NERDTree

項目地址
https://github.com/scrooloose/nerdtree

功能
顯示目錄樹(shù)

安裝

git clone https://github.com/scrooloose/nerdtree.git ~/.vim/bundle

此時(shí)~/.vim/bundle/nerdtree下應該有如下幾個(gè)目錄和文件

autoloaddoclibnerdtree_pluginpluginREADME.markdownsyntax

這幾個(gè)目錄是vim默認的插件目錄,如果我們不是通過(guò)pathogen加載插件,就需要在~/.vim目錄下創(chuàng )建對應的這幾個(gè)目錄,并將NERDTree對應的文件拷到相應的目錄,這樣每個(gè)目錄下會(huì )放置多個(gè)插件的內容,比如~/.vim/doc下就會(huì )放置所有插件的幫組文檔,而我們通過(guò)pathogen來(lái)管理,每個(gè)插件的所有內容都放在同一個(gè)目錄中,比如這里的NERDTree插件的內容我們下載到了~/.vim/bundle/nerdtree下,直接刪除這個(gè)目錄即可刪除插件,如果后續插件有更新,在該目錄下通過(guò)git命令也可以很容易更新到最新版本。

打開(kāi)vim,在命令行模式下輸入:Helptags載入插件的幫組文檔,或者用:helptags help_dir載入指定目錄的幫組文檔,其中help_dir是你需要加載的插件幫組文檔所在的目錄,比如這里是~/.vim/bundle/nerdtree/doc

測試
用vim打開(kāi)一個(gè)文件,在命令行模式下輸入:NERDTree,然后回車(chē),窗口左側就出現了vim工作目錄的目錄樹(shù),如下圖所示

將光標置于NERDTree窗口,按'?'可查看幫助,NERDTree的操作很簡(jiǎn)單,通常是將光標置于一個(gè)目錄/文件上,通過(guò)一個(gè)按鍵來(lái)操作,下面列出幾個(gè)常用按鍵及其對應的操作

文件相關(guān)操作o  : 在光標所在的上一個(gè)窗口打開(kāi)文件,并將光標置于新打開(kāi)的窗口go : 預覽文件,光標停留在NERDTree窗口中t  : 在新標簽中打開(kāi)文件并激活gt : 在新標簽打開(kāi)文件,光標留在NERDTree窗口中i  : 水平分割打開(kāi)文件gi : 水平分割預覽s  : 垂直分割打開(kāi)文件gs : 垂直分割預覽目錄樹(shù)相關(guān)操作o  : 展開(kāi)/關(guān)閉目錄O  : 遞歸展開(kāi)目錄。慎用,如果目錄層級多,打開(kāi)會(huì )很慢x  : 關(guān)閉父目錄C  : 切換光標所在目錄為根目錄u  : 切換目錄樹(shù)的根目錄為上層目錄U  : 切換目錄樹(shù)的根目錄為上層目錄,并保持舊的目錄樹(shù)的狀態(tài)r  : 刷新當前目錄R  : 刷新當前根目錄(這個(gè)在新加入文件后會(huì )用到)cd : 切換vim工作目錄為光標所在目錄(命令模式下:pwd可查看當前工作目錄)

為了方便打開(kāi)NERDTree,我們可以設置快捷鍵,打開(kāi)~/.vimrc,插入如下一行

map <C-n> :NERDTree<CR>

這樣,當打開(kāi)vim時(shí),只要輸入ctrl+n即可打開(kāi)NERDTree

MiniBufExplorer

項目地址
http://www.vim.org/scripts/script.php?script_id=159

功能
顯示已打開(kāi)的buffer

安裝
以6.3.2版本為例,根據項目地址可以找到對應版本的下載鏈接

mkdir -p ~/.vim/bundle/minibufexplorer/plugin && wget "http://www.vim.org/scripts/download_script.php?src_id=3640" -O ~/.vim/bundle/minibufexplorer/plugin/minibufexpl.vim

測試
用vim打開(kāi)一個(gè)文件,此時(shí)看不到minibufexplorer窗口,因為默認是只有一個(gè)buffer時(shí)不顯示窗口的,在命令行模式下通過(guò):vsp filename打開(kāi)另一個(gè)文件(或者用NERDTree瀏覽打開(kāi)其它文件),看看此時(shí)窗口上方是不是出現了MiniBufExplorer的窗口,如下所示

我們先來(lái)解釋一下什么叫buffer,vim為每個(gè)打開(kāi)的文件都創(chuàng )建了一個(gè)buffer,這個(gè)buffer存儲在內存中,為了下次打開(kāi)文件時(shí)快速加載,比如我們通過(guò)NERDTree瀏覽并打開(kāi)了多個(gè)文件,即便某些文件你退出了編輯,它的buffer仍舊是存在的,在命令模式下,我們輸入:ls可以查看打開(kāi)的buffer列表,每一行前面的數字對應buffer的編號,通過(guò)輸入:b N,其中N代表buffer編號,可以打開(kāi)對應的buffer。對應上面的截圖,我們打開(kāi)了兩個(gè)文件,此時(shí)minibufexplorer窗口顯示有兩個(gè)buffer,即便我們關(guān)閉一個(gè)文件,這兩個(gè)buffer仍然存在,將光標移到某個(gè)buffer的名稱(chēng)上,回車(chē)可打開(kāi)對應的buffer,按d可刪除buffer,具體的操作可以直接閱讀插件文件,路徑為~/.vim/bundle/minibufexplorer/plugin/minibufexpl.vim

配置
在~/.vimrc文件中加入如下命令

let g:miniBufExplMaxSize = 2

該配置含義為minibufexplorer窗口最大高度為2行,默認是沒(méi)有上限的,你打開(kāi)的buffer足夠多,一會(huì )一直增長(cháng)下去,為了方便閱讀我一般將它設為2,其它配置不怎么用到,需要用的時(shí)候可以參考插件文件,并在~/.vimrc中添加配置

ctags+taglist+omnicppcomplete

接下來(lái)就到了重磅戲了,前面還只是一些窗口相關(guān)的基本操作,是為了方便瀏覽文件,我們閱讀C++代碼時(shí)希望能快速定位函數、變量,類(lèi)似于VS等其它IDE提供的功能

ctags

這個(gè)并不是插件,而是可執行程序,是用來(lái)對代碼建索引,方便查找的,有些Linux版本是自帶ctags的,如果沒(méi)有,按如下方式安裝

sudo yum install ctags

ubuntu安裝方式

sudo apt-get install ctags

mac也是自帶ctags的,但是那個(gè)不好用,可以重新安裝

brew install ctags

如果安裝失敗,看是不是因為/usr/bin/ctags文件已經(jīng)存在,可以先mv走,然后再執行

創(chuàng )建索引:在你代碼的根目錄執行如下命令,會(huì )生成一個(gè)tags文件,此時(shí)在代碼根目錄下打開(kāi)一個(gè)文件(vim默認只加載工作目錄下的tags文件),將光標置于一個(gè)函數或結構體名字上,按ctr+]即可跳轉到該名稱(chēng)的定義處,如果出現多個(gè)選項,可以輸入編號選擇對應跳轉的地方,按ctr+o可回到光標之前的位置

ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

taglist

taglist是vim的一個(gè)插件,可以將代碼內的函數、變量等按規律列出來(lái),方便查找

下載地址
http://www.vim.org/scripts/script.php?script_id=273,或者直接按如下方式下載并安裝

cd ~/.vim/bundle && wget "http://www.vim.org/scripts/download_script.php?src_id=19574" -O taglist.zip && unzip taglist.zip -d taglist

這樣就生成了~/.vim/bundle/taglist目錄,該目錄的結構為

taglist├── doc│   └── taglist.txt└── plugin    └── taglist.vim

其中plugin目錄下為插件文件,doc目錄下為說(shuō)明文檔。打開(kāi)vim,在命令行模式下輸入:helptags ~/.vim/bundle/taglist/doc可以加載說(shuō)明文檔,然后輸入help taglist.txt則可以顯示說(shuō)明文檔

配置
打開(kāi)~/.vimrc,輸入如下內容

let Tlist_Show_One_File=1    " 只展示一個(gè)文件的taglistlet Tlist_Exit_OnlyWindow=1  " 當taglist是最后以個(gè)窗口時(shí)自動(dòng)退出let Tlist_Use_Right_Window=1 " 在右邊顯示taglist窗口let Tlist_Sort_Type="name"   " tag按名字排序

這幾行配置看名字就能知道什么意思,引號后邊是說(shuō)明,在vim配置文件里,雙引號代表注釋?zhuān)?lèi)似于C語(yǔ)言里的/

如果打開(kāi)過(guò)程中出現問(wèn)題,例如

Taglist: Failed to generate tags for /Users/Zorba/Dropbox/RubymineProjects/rcafe/app/controllers/posts_controller.rb /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ctags: illegal option -- -^@usage:  
ctags [-BFadtuwvx] [-f tagsfile] file ...^@  

就要重新安裝一遍ctags

```

brew install ctags-exuberant

```

測試
打開(kāi)一個(gè)文件,在命令行模式下輸入:TlistToggle即可顯示taglist窗口,配合NERDTree一起效果如下

OmniCppComplete

這是一個(gè)對C++進(jìn)行語(yǔ)法補全的插件,可以對函數、命名空間、類(lèi)成員等進(jìn)行補全,使用起來(lái)和絕大多數IDE差不多,不一樣的是IDE為你做了很多你不知道的事情,而omni補全需要依賴(lài)tags文件,需要你用ctags命令自己生成

下載地址
http://www.vim.org/scripts/script.php?script_id=1520

也可用如下命令直接下載并安裝

cd ~/.vim/bundle && wget "http://www.vim.org/scripts/download_script.php?src_id=7722" -O omnicppcomplete.zip && unzip omnicppcomplete.zip -d omnicppcomplete

該命令會(huì )生成~/.vim/bundle/omnicppcomplete目錄,目錄結構為

├── after│   └── ftplugin│       ├── cpp.vim│       └── c.vim├── autoload│   └── omni│       ├── common│       │   ├── debug.vim│       │   └── utils.vim│       └── cpp│           ├── complete.vim│           ├── includes.vim│           ├── items.vim│           ├── maycomplete.vim│           ├── namespaces.vim│           ├── settings.vim│           ├── tokenizer.vim│           └── utils.vim└── doc    └── omnicppcomplete.txt

打開(kāi)vim,在命令行模式下輸入:helptags ~/.vim/bundle/omnicppcomplete/doc即可加載說(shuō)明文檔,輸入:help omnicppcomplete查看說(shuō)明文檔

配置
打開(kāi)~/.vimrc文件,輸入

filetype plugin indent onset completeopt=longest,menulet OmniCpp_NamespaceSearch = 2     " search namespaces in the current buffer   and in included fileslet OmniCpp_ShowPrototypeInAbbr = 1 " 顯示函數參數列表let OmniCpp_MayCompleteScope = 1    " 輸入 :: 后自動(dòng)補全let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]

測試
前面說(shuō)過(guò),omni插件的補全是依賴(lài)于tags文件的,因此需要我們手動(dòng)建立tags文件,假設現在有兩個(gè)文件hello.h和hello.cpp如下

我們在和這兩個(gè)文件所在的目錄輸入

ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

這樣就生成了tags文件,然后我們打開(kāi)main.cpp來(lái)測試,當輸入hello.h和hello.cpp中的函數或結構體時(shí),通過(guò)按ctr+x ctr+o就可以自動(dòng)補全了,效果如下

通過(guò)按ctr+n和ctr+p可以對候選項進(jìn)行上下選擇。通過(guò)這種方式可以實(shí)現對函數、結構體的補全

對STL補全
上面的方式只能對自己的代碼進(jìn)行補全,是當我們要使用其它庫比如STL甚至是第三方庫時(shí)就無(wú)法補全,原因很簡(jiǎn)單,我們只對自己的代碼建立了tags文件,想要對其它庫進(jìn)行補全,就必須對它們的源代碼建立tags文件,所幸的是vim的插件編寫(xiě)者們早已解決了這個(gè)需求,并且他們專(zhuān)門(mén)針對STL頭文件進(jìn)行了修改,以便能更好的適應omni的補全,首先下載STL源代碼,地址為http://www.vim.org/scripts/script.php?script_id=2358,可通過(guò)如下命令下載并解壓

mkdir -p ~/.vim/tags && cd ~/.vim/tags && wget "http://www.vim.org/scripts/download_script.php?src_id=9178" -O - | tar jxvf -

這樣就將STL的源碼下載到了~/.vim/tags/cpp_src目錄下,我們在該目錄下執行ctags命令

ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++

這樣就生成了~/.vim/tags/cpp_src/tags這個(gè)文件,然后打開(kāi)~/.vimrc進(jìn)行如下設置

set tags+=~/.vim/tags/cpp_src/tags

該命令是設置tags文件的搜索路徑,默認只有vim工作目錄的tags文件,這樣設置之后就會(huì )同時(shí)加載指定目錄的tags文件,你可以在后面添加更多其它第三方庫的tags文件,現在對STL的補全效果如下

omnicppcomplete的補全設置雖然麻煩,但也讓我們更加清楚了插件是怎樣工作的,作為程序員,至少應該對某些東西的工作原理搞清楚,而不是像使用IDE一樣不管任何東西,你想自定義一下東西也無(wú)從下手。

omnicppcomplete觸發(fā)補全需要用到ctr+x ctr+o,顯然這是不友好的,熟悉Linux命令行的人一定對shell命令的補全印象深刻,只需要按一下TAB鍵就可以進(jìn)行補全,vim插件的強大之處在于,它可以實(shí)現你幾乎所有的需求,想要用TAB鍵進(jìn)行補全,就需要用到SuperTab

SuperTab

項目地址
https://github.com/ervandew/supertab

安裝
使用git進(jìn)行安裝是最方便的

cd ~/.vim/bundle && git clone https://github.com/ervandew/supertab.git

測試
無(wú)需任何配置即可使用,這時(shí)你想要補全變量名或函數名只需按一下TAB鍵即可,出現候選窗口之后也可以用TAB鍵進(jìn)行選擇,這樣是不是方便了很多!

由于TAB鍵被映射成了補全快捷鍵,也就無(wú)法通過(guò)TAB鍵直接輸入制表符,這時(shí)如果想要輸入制表符可以通過(guò)ctr+v TAB即可,即先輸入ctr+v再輸入TAB鍵,在vim下通過(guò)ctl+v可以輸入很多不可見(jiàn)字符,比如試試ctr+v ctr+w

最終的配置文件

裝了這么多插件,在配置文件~/.vimrc里也增添了不少內容,最后你的配置文件至少應該包含以下內容

set tags+=~/.vim/tags/cpp_src/tags   " 設置tags搜索路徑syntax onfiletype plugin indent onmap <C-n> :NERDTree<CR>" pathongenexecute pathogen#infect()" taglistlet Tlist_Show_One_File=1let Tlist_Exit_OnlyWindow=1let Tlist_Use_Right_Window=1let Tlist_Sort_Type="name"" omnicppcompleteset completeopt=longest,menulet OmniCpp_NamespaceSearch = 2     " search namespaces in the current buffer and in included fileslet OmniCpp_ShowPrototypeInAbbr = 1 " 顯示函數參數列表let OmniCpp_MayCompleteScope = 1    " 輸入 :: 后自動(dòng)補全let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]

這個(gè)配置文件全都是和插件相關(guān)的配置,你還可以在里面添加其它配置來(lái)靈活定制你的vim,由于本文主要介紹插件相關(guān)內容,就不展開(kāi)介紹了

總結

vim的C++開(kāi)發(fā)環(huán)境到此就配好了,總的來(lái)說(shuō)我們安裝了這么幾類(lèi)插件

  1. 管理插件的插件
  2. 管理窗口和buffer
  3. 語(yǔ)法增強
  4. 代碼補全

通過(guò)這些插件我們可以將vim打造成一個(gè)好用的IDE,雖然經(jīng)過(guò)了很多周折,但這些功夫都不會(huì )白費,一來(lái)我們可以通過(guò)這些插件了解IDE的一些工作原理,二來(lái)通過(guò)這些插件的安裝我們也更加了解了vim插件的使用方法,有了這些基礎,后續如果想滿(mǎn)足一些個(gè)性化的需求,豈不易哉!






reference:

http://littlewhite.us/archives/212

http://helloruby.5oclock.io/2015/01/25/taglist/

http://www.runtime-era.com/2012/05/exuberant-ctags-in-osx-107.html


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
【Vim】使用Vundle管理配置Vim基本插件
打造linux下的source insight
嵌入式Linux系列第19篇:如何高效的閱讀Linux源碼
vim中多標簽和多窗口的使用
將Vim改造為強大的IDE—Vim集成Ctags/Taglist/Cscope/Winmanager/NERDTree/OmniCppComplete
將vim打造成強大的python和c的ide
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久