由于是把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文件,这个文件是系统文件,也就是说修改这个文件对所有的用户都起作用)
用过source insight的人都知道这样的一个功能,SI能够把当前文件的宏,全局变量,函数等Tag显示在Symbol窗口中,用鼠标点击上述的Tag,就跳到该Tag定义的位置,可以按字母序、该Tag所属的类或者Scope,以及该tag在文件中出现的位置进行排序;如果切换到另外一个文件,Symbol窗口更新显示这个文件中的tag。
要使用taglist插件,必须满足:
第一条很简单,就是在.vimrc文件中加上filetype on就行了;system()调用在一般的VIM版本都会支持(只有suse Linux发行版中出于安全考虑,关闭了此功能),主要是第二条,接下来重点介绍Exuberant ctags的安装。[1]
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,所以最好把它装上。
设置好上面的过程,就可以进行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 plugin,目前版本是Taglist_46,下载后,把该文件在~/.vim/目录中解压缩,这会在你的~/.vim/plugin和~/.vim/doc目录中各放入一个文件:
plugin/taglist.vim – taglist插件
doc/taglist.txt - taglist帮助文件
使用下面的命令生成帮助标签(下面的操作在VIM中进行):
:helptags ~/.vim/doc
生成帮助标签后,你就可以用下面的命令查看taglist的帮助了:
:help taglist.txt
可以用“:TlistOpen”打开taglist窗口,用“:TlistClose”关闭taglist窗口。
或者使用“:TlistToggle”在打开和关闭间切换。
在我的vimrc中定义了下面的映射,使用“F1”键就可以打开/关闭taglist窗口:
map
或者通过
let mapleader="," "将
map
更过关于Taglist的命令选项参考博文:vim中taglist使用
或者使用Taglist help来查看taglist的使用文档。
set nocp
set ru
set mouse=a "设置鼠标模式为all,设置鼠标模式后,才能通过鼠标双击Taglist列表中的标签来进行跳转;
syntax on
set tabstop=4
set autoindent
set shiftwidth=4
filetype on
"let mapleader="," "将映射为“,”
"map t :TlistToggle "将“,t”表示为命令行模式下的TlistToggle
map :TlistToggle
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就是两种模式切换的快捷键。
同时查找多个单词或者子串,例如:
$ 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键就可全部取消注释