vim安裝Taglist(Tlist)插件

一、建立 .vimrc文件

由於是把Taglist插件安裝在服務器上面,所以我想的儘量Taglist起作用的區域只是我自己的用戶目錄下,這就涉及到home目錄下的.vimrc文件。普通用戶的home目錄下一開始是沒有.vimrc文件的,沒有的話就自己新建一個就行,然後在裏面放上如下的內容:

set nocp
set ru
syntax on  "語法高亮
set number  
set tabstop=4
set autoindent  "自動對齊
set shiftwidth=4
filetype on  "自動識別文件格式;
set showmatch
set matchtime=5
set cindent 

由於是在用戶的家目錄下,所以此時在這個文件中的東西只對本用戶有效。這個文件主要是對vim的一下配置,接下來Taglist的一下快捷鍵以及一些配置信息也要寫在這個文件中。

(在系統的/etc/vim/目錄下也有vimrc文件,這個文件是系統文件,也就是說修改這個文件對所有的用戶都起作用)

 

二、安裝Taglist 需要的條件;

用過source insight的人都知道這樣的一個功能,SI能夠把當前文件的宏,全局變量,函數等Tag顯示在Symbol窗口中,用鼠標點擊上述的Tag,就跳到該Tag定義的位置,可以按字母序、該Tag所屬的類或者Scope,以及該tag在文件中出現的位置進行排序;如果切換到另外一個文件,Symbol窗口更新顯示這個文件中的tag。 

要使用taglist插件,必須滿足:

  • 打開VIM的文件類型自動檢測功能;(即在 .vimrc文件中加上設置:filetype on)
  • 系統中裝了Exuberant ctags工具,並且taglist能夠找到此工具(因爲taglist需要調用它來生成tag文件);
  • 你的VIM支持system()調用;

 

第一條很簡單,就是在.vimrc文件中加上filetype on就行了;system()調用在一般的VIM版本都會支持(只有suse Linux發行版中出於安全考慮,關閉了此功能),主要是第二條,接下來重點介紹Exuberant ctags的安裝。[1]

 

三,Exuberant Ctags的安裝

 Tag List插件需要Ctags這個程序的支持(動態生成tag file),Ctags 是一個用來爲源文件中的標識符(如變量、函數、類成 員、宏定義等)創建索引文件(tag file)的程序。這些索引讓我們能夠快速便利地在編輯器或其它工具中定位到指定標識符的定義。最初的Ctags由Ken Arnold編寫並首先出現在BSD Unix中,現在大多數的Unix-like系統中都已經內置了這個工具,當然,也包括了MacOSX 。

然而,系統自帶的Ctags功能比較簡單,支持的語言也少(如不支持C++、Java等語言),所以推薦安裝更強大的Exuberant Ctags。Exuberant Ctags最初由Darren Hiebert編寫並隨Vim發佈,但在Vim6時獨立出來爲一個項目,它提供了對更多的編程語言(支持多達41種語言,並可以添加自定義語言),同時兼 容原始Ctags的索引文件格式,除此之外很多的Vim插件也只支持Exuberant Ctags,所以最好把它裝上。

 

  • 首先到官方網站去下載Exuberant Ctags的源代碼,目前最新版本是5.8(下載需要翻牆),ctags-5.8.tar.gz
     
  • 接着解壓到本地並進入文件夾,解壓後,進行如下的操作:
    $cd ctags-5.8
    $./configure //生成Makefile,makefile中安裝路徑等信息,默認的安裝路徑是/usr/local/bin
    $make
    #make install
     
  • 安裝結束後,使用ctags命令測試是否成功。或者which ctags、whatis ctags、whereis ctags等命令測試。
    Exuberant Ctags默認會被安裝在/usr/local/bin目錄下了(要想修改安裝路徑,可以通過修改Makefile或者在make的時候但加prefix參數,這兒不細講)由於系統中原先已經內置了Ctags,如果沒有將/usr/local/bin添加到系統路 徑中的話,默認執行的是/usr/bin/ctags。
    可以在命令行中執行:
    which ctags
    如果返回的不是/usr/local/bin/ctags,那麼就需要在~目錄下的.profile文件中加入以下語句:
    export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
    然後命令行中執行:source ~/.profile

    或者直接在~/.vimrc中加入以下配置語句:
    let Tlist_Ctags_Cmd="/usr/local/bin/ctags"  //這個路徑是安裝ctags後,ctags可執行文件的路徑

    不過還是推薦第一種做法,因爲通常用戶自行安裝的軟件安裝到/usr/local目錄下會比較合適,這樣做的好處可以查找相關資料,所以不妨先把路徑加 到$PATH變量中。[2]
     
  • 安裝成功後,通過命令:$ctags -R   //遞歸的爲當前目錄及子目錄下的所有代碼文件生成tags文件
     
  • 將tags文件在運行時導入。又是修改.vimrc文件,方法是在.vimrc文件中增加一行:
    set tags = ~/your-tags-path/tags         //這個路徑是ctags -R命令執行後生成的ctags文件所在的路徑。
    這樣以後每次啓動vim將自動導入此tags文件。
     
  • 設置好了tags文件,在定位變量/函數的定義時,最常用的快捷鍵是:
    Ctrl + ]      //跳轉到變量或函數的定義處
    Ctrl + o/t   //返回到跳轉前的位置。

 

設置好上面的過程,就可以進行Taglist插件的安裝了。

---------------------------------------------------------2019/09/03更新 begin-------------------------------------

安裝Exuberant Ctags是必須的,因爲系統自帶的可能是一個 GNU 的 ctags,使用這個ctags在使用taglist的時候會出現:

error:ctags: Unknown option: --fields^@

或者:ctags: unrecognized option '--format=2'^@^ITry 

這時候只需要按照上面的方法重新下載一個Exuberant Ctags,然後安裝,然後再把可執行文件ctags的路徑加到環境變量中,最後記得把 .vimrc中的Tlist_Ctags_Cmd這個參數設置爲可執行文件ctags的路徑就可以了。

---------------------------------------------------------2019/09/03更新 end-------------------------------------

 

四、Taglist的安裝

官方網站上面下載Taglist文件,可能需要翻牆。

下載最新版本的taglist plugin,目前版本是Taglist_46,下載後,把該文件在~/.vim/目錄中解壓縮,這會在你的~/.vim/plugin和~/.vim/doc目錄中各放入一個文件:       
plugin/taglist.vim – taglist插件       
doc/taglist.txt    - taglist幫助文件

 

使用下面的命令生成幫助標籤(下面的操作在VIM中進行):
:helptags ~/.vim/doc
生成幫助標籤後,你就可以用下面的命令查看taglist的幫助了:
:help taglist.txt

 

五、Taglist的使用命令

可以用“:TlistOpen”打開taglist窗口,用“:TlistClose”關閉taglist窗口。
或者使用“:TlistToggle”在打開和關閉間切換。
在我的vimrc中定義了下面的映射,使用“F1”鍵就可以打開/關閉taglist窗口:
map <F1> <Esc>:TlistToggle<Cr>
 

或者通過<leader>變量來設置映射命令,通過下面兩條命令就可以通過使用",t"來打開和關閉taglist了。
let mapleader=","           "將<leader>映射爲",",默認爲"\"
map <silient> <leader>t <Esc>:TlistToggle<Cr>    "將“,t”表示爲在命令行模式下輸入命令:TlistToggel
 

更過關於Taglist的命令選項參考博文:vim中taglist使用 
或者使用Taglist help來查看taglist的使用文檔。

 

六、我自己配置的簡單的帶有Taglist操作快捷鍵的.vimrc文件參考

set nocp
set ru
set mouse=a "設置鼠標模式爲all,設置鼠標模式後,才能通過鼠標雙擊Taglist列表中的標籤來進行跳轉;
syntax on
set tabstop=4
set autoindent
set shiftwidth=4
filetype on
"let mapleader=","   "將<leader>映射爲“,”
"map <silent> <leader>t <Esc>:TlistToggle<Cr>  "將“,t”表示爲命令行模式下的TlistToggle
map <F1> <Esc>:TlistToggle<Cr>
set showmatch
set matchtime=5
set cindent
set tags=~/gem5-master/tags
""""""""""""""""""""""""""""""
" Tag list (ctags) 
""""""""""""""""""""""""""""""
let Tlist_Ctags_Cmd = '/usr/local/bin/ctags'   "Ctags可執行文件的路徑,千萬要寫對了,否則顯示no such file
let Tlist_Show_One_File = 1            "不同時顯示多個文件的tag,只顯示當前文件的
let Tlist_Exit_OnlyWindow = 1          "如果taglist窗口是最後一個窗口,則退出vim
let Tlist_Auto_Open=0               "打開文件時候不自動打開Taglist窗口
let Tlist_Use_Right_Window = 0      "在右側窗口中顯示taglist窗口

 

七、簡短的總結:

其實整個安裝過程是很簡單的,

1、所謂安裝taglist,其實就是解壓縮一個文件而已,所以在兩個電腦之間移動時,將解壓過的東西移動到對應的位置,只要在$PATH環境變量下就可以,如果不在,就在PATH變量後加上就可以了。

2、所以tag,就是一個個的標記,那我們主要是在gem5-master中做跳轉,當我們使用命令ctag -R做標記時,系統如果提示我們沒有安裝ctags,我們就使用命令sudo apt-get install ctags-exuberant(系統會有提示)安裝就可以了

3、上面的工作做好之後,就需要我們在自己的用戶目錄下編輯隱藏文件 .vimrc就可以了,這裏面會設置:①你的gem5-master生成的tag文件~/gem5-master/tags。②你的ctags可執行文件的位置/usr/bin/ctags。③你的快捷鍵的設置。

4、在修改完.vimrc後可能需要給這個文件以執行權限(這一點我不確定),反正就是在使用vim進行文件編輯的時候,在打開文件的時候會去讀取.vimrc文件,所以說如果我們修改了.vimrc文件,想要我們修改的內容起作用的話,是需要把需要查看的文件關閉重新打開就可以了。

 

八,再推測一個可以和taglist同時使用的將vim打造成和window IDE類似的昨天帶文件目錄的插件:winManager,這兒就不詳細寫了,很簡單:

win

注:

1、.vimrc中的內容被解釋執行的時候 雙引號"之後的內容代表註釋。vim的快捷鍵的設置本來就是一個挺龐大的內容,就不介紹了,詳情請看:【Vim】使用map自定義快捷鍵

2、編輯完.vimrc之後用
source /etc/vimrc,報錯:
-bash: /etc/vimrc: line 15: syntax error near unexpected token `"autocmd"‘
-bash: /etc/vimrc: line 15: `if has("autocmd")‘
以爲是語法問題,解決了半天,沒解決掉,

實際原因:.vimrc是vim起動時解釋的,而不是由shell來解釋。用shell來source它肯定不行。

解決辦法:其實根本不用source等任何操作,使用vi時候自動讀取配置

3、在設置快捷鍵時,有可能會出現你設置的快捷鍵和系統中某個設置的快捷鍵衝突的情況,比方說我設置的F1就可能和ubuntu的GNOME Terminal Manual衝突的情況,那麼此時你設置的taglist的快捷鍵就可能無法使用。此時的解決方法就是不要和系統做對,換個快捷鍵。

當然此時你選擇把系統的這個快捷鍵取消也可以,因爲GNOME Terminal Manual其實沒什麼用,可以在Terminal打開之後,左上角edit→Keyboard Shortcuts→將最下面的Help的快捷鍵F1換成其他的快捷鍵,鑑於這個快捷鍵我們不怎麼用,我們可以設置一個即繁瑣的即可,相當於取消這個快捷鍵了

 

 

參考:

[1] vim中taglist使用(比較詳細的)
[2] 安裝Exuberant Ctags及Tag List插件

 

附:

vim的一些常用按鍵:

在冒號模式下,輸入1代表回到文件頭,輸入$回到文件尾;
* //定位至當前光標所指單詞下一次出現的位置
# //定位至當前光標所指單詞上一次出現的地方

Ctrl + ] //跳到函數的定義處
Ctrl + o //後退到上一位置處          Ctrl + t 應該是跳回到上一個位置,只能跳一次;
G + ] //列出可可跳轉的多個選項,類似於sublime中把鼠標放到某一個函數上,會自動列出該函數所有的定義位置。

在鼠標模式下不能複製,可以採用先按住shift,然後選中文本,然後右鍵或者ctrl + insert進行復制;
在進行拷貝操作時,有時候出現格式混亂的問題,此時需要在:模式下輸入命令:set paste,此時你再次進行粘貼就不會出現格式混亂的問
題了。當然set paste的壞處就是寫代碼的時候不能自動縮進了,所以設置一個快捷鍵自動的在paste和nopaste之間切換時最好的了,
在~/.vimrc中增加語句:set pastetoggle=<F9>,此時在:模式下按F9就是兩種模式切換的快捷鍵。

同時查找多個單詞或者子串,例如:
$ grep 'warning\|error\|critical' /var/log/messages    //檢索日誌文件中的warning, error和critical關鍵詞

vim的多行同時移動:

一、連續的十幾行到50行內的左右移動:
      1. 第m行到第n行右移一個tab
         :m,n>
      2. 第m行到第n行左移一個tab
         :m,n<
二、連續的I行的左右移動(I > 100):
    向左:
      1.移動到要處理的首行,輸入ma
      2.移動到要處理的尾行,輸入<'a
    向右:
      即將第二個命令中的 '<' 改爲 '>'即可。

 vim的批量註釋:

多行註釋:
1. 進入命令行模式,按ctrl + v進入 visual block模式,然後按j, 或者k選中多行,把需要註釋的行標記起來
2. 按大寫字母I,再插入註釋符,例如//
3. 按esc鍵就會全部註釋了

取消多行註釋:
1. 進入命令行模式,按ctrl + v進入 visual block模式,按字母l橫向選中列的個數,例如 // 需要選中2列
2. 按字母j,或者k選中註釋符號
3. 按d鍵就可全部取消註釋           

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章