1. 程式人生 > >VIM5:利用vundle打造經典IDE

VIM5:利用vundle打造經典IDE

在上篇文章裡講了 vundle ,這次我們用 vundle 打造vim利器

 宣告:  $xxxxx 表示shell命令    :xxxxx 表示vim命令

1.  由於在下面的外掛中需要ctags程式,所以我們這裡先打造好ctags環境

ctags

      tags檔案(標籤檔案)可是程式設計師的看家寶呀, 你可以不用它, 但你不能不知道它, 因為Linux核心原始碼都提供了"make tags"這個選項.

   tags檔案是由ctags程式產生的一個索引檔案, ctags程式其時叫"Exuberant Ctags", 是Unix上面ctags程式的替代品, 並且比它功能強大, 是大多數Linux發行版上預設的ctags程式。Ctags工具是用來遍歷原始碼檔案生成tags檔案,這些tags檔案能被編輯器或其它工具用來快速查詢定位原始碼中的符號(tag/symbol),如變數名、函式名等。下面外掛中tags檔案就是Tagbar和OmniCppComplete工作的基礎。如果你在讀程式時看了一個函式呼叫, 或者一個變數, 或者一個巨集等等, 你想知道它們的定義在哪兒, 現在流行用是的<C-]>, 當游標在某個函式或變數上時, 按下"Ctrl+]", 游標會自動跳轉到其定義處。這個功能就是可以由ctags程式來幫助實現。

查查你電腦裡有沒有ctags這個程式。

方法:

$ ctags --version

我的 ubuntu12.04沒有,所以用如下命令安裝

$ sudo apt-get install exuberant-ctags
$ ctags --version

結果顯示裝好了

Exuberant Ctags 5.9~svn20110310, Copyright (C) 1996-2009 Darren Hiebert
  Compiled: Nov  9 2011, 17:40:39
  Addresses: <[email protected]>, http://ctags.sourceforge.net
  Optional compiled features: +wildcards, +regex

如果沒有或者有但版本低於5.6,那建議你去裝個高版本

下載地址: http://ctags.sourceforge.net  安裝和普通軟體一樣,不再贅述

由於vim的某些外掛需要將tags檔案,所以要用ctags生成tags檔案,這樣viim會自動呼叫,下面看如何生成tags檔案

方法一:在vimrc中增加一句

"設定ctags的快捷鍵為 Ctrl-F12
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR>  

               然後,進入原始碼的根目錄,開啟vim,按下ctrl-F12

,會自動生成tags檔案並自動載入到vim,以後可以跳轉到定義處了。

方法二:進入原始碼根目錄,執行

$ctags -R

命令,就會生成tags檔案,然後用vim開啟源程式,並執行

:set tags = /..../tags 
 /..../tags  這表示你的tags檔案路徑 

此時tags檔案載入進vim了,可以跳轉了。

ctags的使用

                 快捷鍵:Ctrl-]    跳轉到游標所在符號的定義。

               Ctrl-t    回到上次跳轉前的位置。

        更多功能通過命令man ctags或在Vim命令列下執行help ctags查詢

                 注意:tags檔案不會自動更新,所以當你中途修改了程式碼時,應該手動重新生成tags檔案,vim會隨時更新載入tags檔案所以不用重啟。

 2. 外掛的安裝:注意要新增到vimrc檔案中的內容我用程式碼形式表示出來

新增vim-scripts裡面外掛(注意外掛名稱要跟倉庫的一致)

"提供多檔案同時編輯功能,操作快取buffer視窗
Bundle 'minibufexplorerpp'         
let g:miniBufExplMapWindowNavVim = 1 "Ctrl-<hjkl> to move to window 
let g:miniBufExplTabWrap = 1 " make tabs show complete (no broken on two lines)

這樣就可以使用 minibuf explorerpp了,

Ctrl-h/j/k/l 在各個視窗中切換,其中minibuf 佔用的就是一個視窗,你可以用 Ctrl-k 切換到其上

 在minibuf視窗中用<tab>、<shitf - tab> 迴圈選擇 buffer,按 d 則刪除該 buffer 

按 <enter> e o 都是在原視窗開啟 buffer

s 水平方向分隔原來視窗開啟
v 垂直方向分隔原來視窗開啟
每個 buffer 名稱前都有個數字,那是 buffer 的編號,因此,可以輸入 :b <buffer編號> 來快速切換

下面紅色部分是網友寫的一個快捷鍵的設定,我沒用,如果大家想用的話可以看看,但是要注意不要跟別的衝突

先自宣告,本人是個懶種,因此設定了幾個快捷鍵:
<F1> 切換至前一緩衝區
<F2> 切換至後一緩衝區
<F3> 儲存緩衝區(:update 羅)
<F4> 關閉緩衝區(:bd,或 :bdelete,刪除緩衝區)
指令碼如下:

nnoremap <F1> :call MyCyclebuffer(0)<CR>

nnoremap <Leader>1 :call MyCyclebuffer(0)<CR>

inoremap <F1> <ESC>:call MyCyclebuffer(0)<CR>

nnoremap <F2> :call MyCyclebuffer(1)<CR>

nnoremap <Leader>2 :call MyCyclebuffer(1)<CR>

inoremap <F2> <ESC>:call MyCyclebuffer(1)<CR>

" Cycle Through buffers 

" from MiniBufExplorer, modified by DJW

function! MyCyclebuffer(forward)

" Change buffer (keeping track of before and after buffers)

let l:origBuf = bufnr(''%'')

if (a:forward == 1)

bn!

else

bp!

endif

let l:curBuf = bufnr(''%'')

" Skip any non-modifiable buffers, but don''t cycle forever

" This should stop us from stopping in any of the [Explorers]

while getbufvar(l:curBuf, ''&modifiable'') == 0 && l:origBuf != l:curBuf

if (a:forward == 1)

bn!

else

bp!

endif

let l:curBuf = bufnr(''%'')

endwhile

endfunction

" <F4> delete buffer

nnoremap <F4> :bd<CR>

nnoremap <Leader>4 :bd<CR>

inoremap <F4> <ESC>:bd<CR>

" <F3> or Ctrl-S update buffer

nnoremap <C-S> :update<CR>

inoremap <C-S> <C-O>:update<CR>

vnoremap <C-S> <C-C>:update<CR>

nnoremap <F3> :update<CR>

inoremap <F3> <C-O>:update<CR>

"提供原始碼符號的結構化檢視,這個外掛需要tags檔案的支援
Bundle 'majutsushi/tagbar' 

nmap <F4> :TagbarToggle<CR>   "設定快捷鍵,按下F4即可顯示列表  
let g:tagbar_autofocus = 1    
let g:tagbar_width = 30       "設定寬度,預設為30  
autocmd VimEnter * nested :call tagbar#autoopen(1)    "開啟vim時自動開啟tagbar  
let g:tagbar_left = 1         "在左側  
"let g:tagbar_right = 1        "在右側  

在終端執行命令  apt-get install cscope  安裝cscope

"對cscope的支援
"Bundle  'cscope-quickfix'  
"設定使用 quickfix 視窗來顯示 cscope 的查詢結果
set cscopequickfix=s-,c-,d-,i-,t-,e- 
"切換到下一個結果
nmap <F6> :cn<cr>
"切換到上一個結果
nmap <F7> :cp<cr>
silent! execute "!find . -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.java' -o -name '*.cs' > cscope.files"
silent! execute "!cscope -Rbkq "

if has("cscope") 
	set csprg=/usr/bin/cscope              "指定用來執行 cscope 的命令 
	set csto=1                             "先搜尋tags標籤檔案,再搜尋cscope資料庫 
	set cst                                "使用|:cstag|(:cs find g),而不是預設的:tag 
	set nocsverb                           "不顯示新增資料庫是否成功 
" add any database in current directory 
	if filereadable("cscope.out") 
"新增cscope資料庫 
		execute "cs add cscope.out"                   
	endif 
	set csverb                             "顯示新增成功與否 
endif
"cscope外掛:查詢符號的呼叫和定義位置等,已經整合到vim裡面,這裡只是對映快捷鍵"<C-_>g的按法是先按"Ctrl+Shift+-", 然後很快再按"g"
nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR> "查詢本 C 符號(可以跳過註釋)
nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR> "查詢本定義
nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR> "查詢呼叫本函式的函式
nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR> "查詢本字串
nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR> "查詢本 egrep 模式
nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR> "查詢本檔案
nmap <C-_>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR> "查詢包含本檔案的檔案
nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR> "查詢本函式呼叫的函式


"在Vim命令列下執行cw命令,就能在編輯區下面quickfix視窗看到所有查詢結果的列表

nmap <F6> :cn<cr>切換到下一個結果

nmap <F7> :cp<cr>切換到上一個結果

"提供樹形瀏覽檔案系統的介面

Bundle 'The-NERD-tree'             

" 在 vim 啟動的時候預設開啟 NERDTree(autocmd 可以縮寫為 au)

autocmd VimEnter * NERDTree

map <F3> :NERDTreeMirror<CR>

map <F3> :NERDTreeToggle<CR>


 ”按F3即可顯示或隱藏NerdTree區域了。

和編輯檔案一樣,通過h j k l移動游標定位

o 開啟關閉檔案或者目錄,再按就是關閉目錄,如果是檔案的話,光標出現在開啟的檔案中

go 效果同上,不過游標保持在檔案目錄裡,類似預覽檔案內容的功能

i和s可以水平分割或縱向分割視窗開啟檔案,前面加g類似go的功能

t 在標籤頁中開啟檔案,並跳到標籤

T 在後臺標籤頁中開啟,但不跳

p 到上層目錄

P 到根目錄

K 到同目錄第一個節點

J 到同目錄最後一個節點

m 顯示檔案系統選單(新增、刪除、移動操作)

? 幫助

 這個外掛的常用快捷鍵.
常用快捷鍵:
o - 開啟所選檔案或目錄
enter - 相當於o
go - 類似o, 但游標仍然停留在NERD_tree
t - 在新標籤中開啟所選檔案
T - 類似t, 但游標仍然停留在NERD_tree
i - 在一個水平分割視窗中開啟檔案
gi - 類似i, 但游標仍然停留在NERD_tree
s - 在一個垂直分割視窗中開啟檔案 |NERDTree-s|
gs - 類似s, 但游標仍然停留在NERD_tree
O - 遞迴開啟所選目錄

在使用中如果發現nerdtree顯示列表時,名稱前面有 ?則做如下修改:

編輯NERD_tree.vim,找到這句call s:initVariable("g:NERDTreeDirArrows", !s:running_windows) ,把那個"!"去掉試試

 set completeopt=longest,menu

"主要提供輸入時實時提供類或結構體的屬性或方法的提示和補全,該外掛需要安裝較高版本ctags

Bundle 'OmniCppComplete'      

"使Tab快捷鍵具有更快捷的上下文提示功能

Bundle 'SuperTab'             

let g:SuperTabRetainCompletionType=2

let g:SuperTabDefaultCompletionType="<C-X><C-O>" "以後當你準備按"Ctrl+X Ctrl+O"的時候直接按<Tab>就好了, 夠爽吧

"函式原型顯示

Bundle 'echofunc.vim'

"PowerLine外掛 狀態列增強展示

Bundle 'Lokaltog/vim-powerline'

"vim有一個狀態列 加上powline則有兩個狀態列

set laststatus=2

set t_Co=256

let g:Powline_symbols='fancy'

"用於顯示黑客帝國裡面的字母螢幕,挺好玩的,哈哈

Bundle 'matrix.vim'

matrix使用

:Matrix

如果大家有什麼好的外掛或者使用方法,歡迎大家評論

相關推薦

VIM5:利用vundle打造經典IDE

在上篇文章裡講了 vundle ,這次我們用 vundle 打造vim利器  宣告:  $xxxxx 表示shell命令    :xxxxx 表示vim命令 1.  由於在下面的外掛中需要ctags程式,所以我們這裡先打造好ctags環境 ctags       tag

vim打造開發IDE

time .html 安裝 tex 管理 自己的 sea man 縮進 個人的插件和配置 set nocompatible " 去除VI一致性,必須要添加 filetype off " 必須要添加 " advanced keys " :qa! close all the

利用Bomb打造自己的小程序

存儲空間 util bject image DC 返回 修改 我們 target 小程序開發 Bomb免費後端雲開發 首先,小程序的開發已是熱門,一個前段技術人員必備的技術就是開發小程序.在這裏推薦一個入門小程序文章(連勝出品)。 對於小程序的入門開發就不再做詳細介紹,

利用Python打造一款AV女優相似圖像檢索!同寢的究極大福利!

nbsp 提取 -c 測試 模型 pst 調整 框架 簡單的 簡單的流程 1:收集各女優的照片 2:使用dlib提取面部圖像並調整96*96的大小 3:使用數據擴張(DataAugmentation)將女優面部圖像的數據擴張到1000章 4:將數據轉換為numpy文件 5:

如何利用MongoDB打造TOP榜小程式

歡迎大家前往騰訊雲+社群,獲取更多騰訊海量技術實踐乾貨哦~ 本文由騰訊雲資料庫 TencentDB發表於雲+社群專欄 今天我分享的主題內容大概是兩部分,最主要的還是小遊戲和小程式,第一部分就是跟大家分享下我們在現網運營中服務小遊戲以及爆款小遊戲積累的經驗。在現網運維中我們做了一些改動,幫助爆款小

利用Python打造了一款身份證生成器!請問警察叔叔會聘用我嗎?

今天收到一個小需求:需要一個自動生成身份證號碼的小程式。近期用python較多,因此打算用python實現 需求細化: 1.身份證必須能夠通過身份證校驗程式。 2.通過查詢,發現身份證號碼是有國家標準的,標準號為 GB 11643-1999 可以從百度下載到這個文件 下載:GB116

利用Python打造一款一鍵下載器!管他是vip還是付費的!一鍵下載

大家都知道,我們經常給大家推薦各種各樣的神器。但跟今天推薦的比起來,那些都不算什麼。我們今天要講的這個神器是真正的黑科技,既可以一鍵批量爬美圖、一鍵下電影,又可以自己做一個智慧聊天機器人,還能做資料分析等等...... 這個神奇的黑科技就是程式設計了。 就拿目前最火的Python語言來說,學

Angular-cli 6.x +TS打造經典Todo案例

一、閒嘮嗑幾句 以前用Angular的時候也只是用的js構建的應用,還未涉及ts;趁這次有機會,有時間用ts、angular的腳手架工具angular-cli構建一個經典的todo案例;幾乎所有的vue、react的基礎經典案例都離不開Todo List的應用構建。所以這次

打造vim IDE環境,管理大型專案

這裡以ubuntu為例, 利用cscope實現檔案間的跳轉 1、安裝cscode:   sudo apt-get install cscope 2 、生成工程目錄下的檔案列表: find /my/project/dir -name '*.h' >/my/csco

[vundle]利用vundle工具來管理vim外掛

轉自:http://os.51cto.com/art/201507/484174.htm Vim是Linux上一款用途廣泛的輕量級文字編輯工具。雖然對普通的Linux使用者來說開始學用起來難度相當大,但鑑於它具有的種種好處,完全值得一學。至於功能方面,Vim可以通過外掛實現全面定製。不過由於其高

配置vim,打造C IDE

在網上看到大神們玩Vim,頓時產生興趣,想要模仿一下,目的是要轉至linux下學習C程式設計1.下載vim及基本配置          終端下 $sudo apt-get install vim            輸入命令$vim ~/.vimrc            

Django2.0 利用ajax打造部落格的評論區

首先評論區是需要前端與後臺互動的,前端上接受使用者的輸入。在輸入完成後,立馬在評論區顯示。首先是urls.py path('article/<int:article_id>/comme

利用Python打造了淘寶商品資訊定向爬蟲!老闆給五千!我該收嗎?

    程式的結構設計 進群:960410445  即可獲取數十套PDF! 步驟1:提交商品搜尋請求,迴圈獲取頁面 步驟2:對於每個頁面,提取商品名稱和價格資訊 步驟3:將資訊輸出到螢幕上 eval():eval函式能夠將我們獲取

利用Service打造最簡單的音樂播放器

新建一個moudle,命名為MediaPlayer_ServiceDemo 1.準備素材一首歌,將音樂資源放入res/raw 目錄下,如果沒有raw目錄,就新建一個。 2.準備佈局檔案,一共5個功能,開始、停止、暫停、退出應用繼續播放、退出應用停止播放。

Android 利用ViewDragHelper打造側滑關閉控制元件

效果: 核心思想: 自定義ViewGroup控制元件,利用ViewDragHelper讓此控制元件擁有滑動功能。 將此控制元件附加到每一個Activity。 程式碼很簡單就不一一解釋了,程式碼備註很詳細,所以直接貼程式碼了: impo

利用WMI打造完美三無後門(scrcons.exe)

Welcome!各位ScriptKid,歡迎來到指令碼世界。 今天忙了一天,比較累。不廢話那麼多了,切入正題。 這個“三無”後門的核心就是WMI中的永久事件消費者ActiveScriptEventConsumer(以下簡稱ASEC)。WMI中有許多這 類的事件消費者,簡單的

如何利用github釋出星雲Dapp 和繫結域名 --如何利用github打造部落格專屬域名

星雲獎勵最近一直關注星雲鏈上的開發DApp的進度。5月5日晚上已開放註冊,建議開發者都來試試,可能是開發者今年最大的機會。星雲開發者開放註冊啦,提交一個DApp即可獲得100個NAS(大約7000元)。推薦可獲得40個NAS,更有周、月度大額獎金等你拿!邀請碼:58jke(註

利用反射打造自定義註解,自動校驗或處理資料

    開發過程中,難免會對資料進行校驗或處理,難道每次都對不同的實體類的屬性挨個判斷是否符合規範或者對其進行特殊處理,程式設計師不應該這麼做。在這個時候,自定義註解就派上大用場了。比如自定義一個 @Email 註解,將其標註在只能存放email格式的屬性(private

利用ViewPager打造縱向翻頁、切換效果,仿抖音視訊切換

· 背景介紹     抖音幾乎已經成為了我們日常生活中使用比較頻繁的App,無聊之時或工作之後可以刷一刷短視訊來供我們娛樂與放鬆。看到抖音的視屏切換效果,覺得用ViewPager可以做出一樣的效果。想一想之前用的ViewPager都是橫向切換的,雖然很經常用,但是從來沒

使用Qt Creator打造Python IDE

當前Qt Creator已經允許建立Python檔案了。我們可以使用Qt Creator當做Python的編輯器,支援高亮顯示。但是不支援其他一些高階特性,比如自動填詞功能。 執行Python script需要一些配置。開啟Qt Creator,然後Tools->Op