欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vim安装Taglist插件

程序员文章站 2022-05-29 08:19:11
...

一、建立 .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插件的安装了。


四、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、.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时候自动读取配置



参考:

[1] vim中taglist使用(比较详细的)
[2] 安装Exuberant Ctags及Tag List插件


附:

vim的一些常用按键:

在冒号模式下,输入1代表回到文件头,输入$回到文件尾;
* //定位至当前光标所指单词下一次出现的位置
# //定位至当前光标所指单词上一次出现的地方

Ctrl + ] //跳到函数的定义处
Ctrl + o //后退到上一位置处          Ctrl + t 应该是跳回到上一个位置,只能跳一次;
G + ] //列出可可跳转的多个选项,类似于sublime中把鼠标放到某一个函数上,会自动列出该函数所有的定义位置。

在鼠标模式下不能复制,可以采用先按住shift,然后选中文本,然后右键或者ctrl + insert进行复制;

同时查找多个单词或者子串,例如:
$ 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键就可全部取消注释