Vim插件-标签列表窗口插件taglist

来源:互联网 发布:linux io负载高的排查 编辑:程序博客网 时间:2024/06/10 21:09

TagList插件,是一款基于ctags,在vim代码窗口旁以分隔窗口形式显示当前文件的代码结构概览,增加代码浏览的便利程度的Vim插件。官方网址:Tag List,当前最新可用版本为v4.5.

1. 安装

①下载taglist_45.zip

②解压
将taglist.zip文件解压至~/.vim文件夹下(压缩包中包含有插件文件plugin/taglist.vim和帮助文件doc/taglist.txt)。

③生成帮助
命令行中切换当前路径至~/.vim/doc文件夹,进入vim后执行命令

:helptags .

也可以在任意文件夹下,进入vim后执行命令

:helptags ~/.vim/doc

④环境检查

taglist插件依赖于ctags及其所生成的标签文件,如果用户路径设置中未包含ctags命令所在路径,可以在vim设置文件中配置Tlist_Ctags_Cmd变量,指向ctags命令(而非ctags命令所在路径)。

检查Vim是否打开了filetype on选项。

如Vim所在终端/控制台不支持改变窗口宽度,在Vim配置文件中配置变量Tlist_Inc_Winwidth为0.

⑤重启Vim

2. 标签列表窗口

标签列表窗口中以目录树的形式组织各级标签:文档作为第一级,类别组标签(如宏标签组/函数标签组/变量标签组等)作为第二级,而具体的对象标签则为第三级(叶子结点)。

如图所示:

Taglist效果示意图

3. 基本使用

在Vim中加载代码文件后,可以使用以下命令控制taglist

  • :TlistOpen 打开并将输入焦点至于标签列表窗口
  • :TlistClose 关闭标签列表窗口
  • :TlistToggle 切换标签列表窗口状态(打开←→关闭),标签列表窗口是否获得焦点取决于其他配置
  • ctl-w + w 或ctl-w + 方向键 窗口切换(taglist本质上是一个vim分隔窗口,因此可以使用ctl-w系列快捷键对窗口进行切换操作)
  • 使用鼠标单击切换当前窗口,或在标签列表窗口某标签上双击使代码窗口内窗跳转至标签定义
  • 标签列表窗口内,当光标停留在某个标签之上时,回车键可切换代码窗口内容至标签定义; 'o',在分隔窗口中显示;'t',在vim新标签窗口中显示

4. 选项控制变量

在Vim配置文件中,可通过"let"语句设定以下变量控制taglist:

  • Tlist_GainFocus_On_ToggleOpen : 为1则使用TlistToggle打开标签列表窗口后会获焦点至于标签列表窗口;为0则taglist打开后焦点仍保持在代码窗口
  • Tlist_Auto_Open : 为1则Vim启动后自动打开标签列表窗口
  • Tlist_Close_On_Select : 选择标签或文件后是否自动关闭标签列表窗口
  • Tlist_Exit_OnlyWindow : Vim当前仅打开标签列表窗口时,是否自动退出Vim
  • Tlist_Use_SingleClick : 是否将默认双击标答打开定义的方式更改为单击后打开标签
  • Tlist_Auto_Highlight_Tag : 是否高亮显示当前标签。命令":TlistHighlightTag"也可达到同样效果
  • Tlist_Highlight_Tag_On_BufEnter : 默认情况下,Vim打开/切换至一个新的缓冲区/文件后,标签列表窗口会自动将当前代码窗口对应的标签高亮显示。TlistHighlight_Tag_On_BufEnter置为0可禁止以上行为
  • Tlist_Process_File_Always : 为1则即使标签列表窗口未打开,taglist仍然会在后台处理vim所打开文件的标签
  • Tlist_Auto_Update : 打开/禁止taglist在打开新文件或修改文件后自动更新标签。禁止自动更新后,taglist仅在使用:TlistUpdate,:TlistAddFiles,或:TlistAddFilesRecursive命令后更新标签
  • Tlist_File_Fold_Auto_Close : 自动关闭标签列表窗口中非激活文件/缓冲区所在文档标签树,仅显示当前缓冲区标签树
  • Tlist_Sort_Type : 标签排序依据,可以为"name"(按标签名排序)或"order"(按标签在文件中出现的顺序,默认值)
  • Tlist_Use_Horiz_Window : 标签列表窗口使用水平分割样式
  • Tlist_Use_Right_Window : 标签列表窗口显示在右侧(使用垂直分割样式时)
  • Tlist_WinWidth : 设定水平分割时标签列表窗口的宽度
  • Tlist_WinHeight : 设定垂直分割时标签列表窗口的高度
  • Tlist_Inc_Winwidth : 显示标签列表窗口时允许/禁止扩展Vim窗口宽度
  • Tlist_Compact_Format : 减少标签列表窗口中的空白行
  • Tlist_Enable_Fold_Column : 是否不显示Vim目录列
  • Tlist_Display_Prototype : 是否在标签列表窗口用标签原型替代标签名
  • Tlist_Display_Tag_Scope : 在标签名后是否显示标签有效范围
  • Tlist_Show_Menu : 在图型界面Vim中,是否以下拉菜单方式显示当前文件中的标签
  • Tlist_Max_Submenu_Item : 子菜单项上限值。如子菜单项超出此上限将会被分隔到多个子菜单中。缺省值为25
  • Tlist_Max_Tag_Length : 标签菜单中标签长度上限

5. 标签列表窗口快捷键

taglist快捷键:

  • <CR> : 代码窗口跳转到标签列表窗口中光标所在标签定义处
  • o : 在新建代码窗口中跳转到标签列表窗口中光标所在标签定义处
  • P : 跳转至上一个窗口的标签处
  • p : 代码窗口中内容跳转至标签定义处,光标保持在标签列表窗口中
  • t : 在Vim新标签窗口中跳转至标签定义处。如文件已经在Vim标签窗口中打开,则跳转至此标签窗口
  • Ctrl-t : 在Vim新标签窗口处跳转至标签定义处
  •  : 显示光标当前所在标签原型。对文件标签,显示文件的全路径名,文件类型和标签数量。对标签类型(指如variable/function等类别),显示标签类型和拥有标签的数量;对函数/变量等普通标签,显示其定义的原型
  • u : 更新标签列表窗口中的标签信息
  • s : 切换标签排序类型(按名称序或出现顺序)
  • d : 移除当前标签所在文件的所有标签
  • x : 扩展/收缩标签列表窗口
  • + : 展开折叠节点*
  • - : 折叠结点*
  • * : 展开所有结点
  • = : 折叠所有节点
  • [[ : 跳转至上一个文件标签的头部
  • <Backspace> : 跳转至上一个文件标签头部
  • ]] : 跳转至下一个文件标签头部
  • <Tab> : 跳转至下一个文件标签头部
  • q : 关闭标签列表窗口
  • F1 : 显示帮助**

*ubuntu10.10+Vim7.2+Taglist4.5环境下,'+'似乎也是将节点折叠起来,而非展开。左右方向键'←'和'→'可以展开节点。

**同上环境中,F1给出的是Gnome帮助手册而非Taglist帮助。

6. taglist命令

taglist在Vim中提供了以下扩展命令:

  • :TlistAddFiles {files(s)} [file(s)...] 添加一或多个指定文件(的标签项)到标签列表窗口中。文件名表达式中可使用通配符(*);如文件名中带有空格,需要使用反斜杠对空格进行转义("\ ")
  • :TlistAddFilesRecursive {directory} [{pattern}] 遍历指定路径{directory},将与模式{pattern}相匹配的文件加入标签列表窗口。如未指定pattern,则使用缺省值'*'。如路径中包含空格,需使用反斜杠'\'转义("\ ")
  • :TlistClose 关闭标签列表窗口
  • :TlistDebug [filename] 记录taglist插件的调试信息。如指定了filename,则调试信息将被写入此指定文件(如文件已存在,内容将被覆盖);如未指定filename,则调试信息写入脚本的局部变量中
  • :TlistLock 锁定标签列表,并且不处理新打开的文件
  • :TlistMessage 仅当调试信息写入脚本局部变量时有效,显示记录的调试信息
  • :TlistOpen 打开并跳转至标签列表窗口
  • :TlistSessionSave {filename} 将当前打开文件及其标签信息写入指定文件
  • :TlistSessionLoad {filename} 从指定文件载入所保存的会话信息
  • :TlistShowPrototype [filename] [linenumber] 显示指定文件中指定代码行或之前的标签的原型。如未指定文件名/行号,则使用当前文件名/当前行号
  • :TlistShowTag [filename] [linenumber] 显示指定文件中指定代码行或之前标签名称。如未指定文件名/行号,则使用当前文件名/当前行号
  • :TlistHighlightTag 加亮显示标签窗口中的当前标签
  • :TlistToggle 在打开和关闭状态间切换标签窗口的状态。标签窗口切换至打开状态后仍然光标保持在代码窗口中
  • :TlistUndebug 停止记录taglist插件调试信息
  • :TlistUnlock 解锁标签列表,并处理新打开的文件
  • :TlistUpdate 更新当前缓冲区的标签信息

7. 全局函数

taglist插件为Vim提供了一些全局函数,可供其他插件使用:

  • Tlist_Update_File_Tags({filename}, {filetype}) 以指定文件类型更新指定文件的标签信息。如taglist插件此前未处理过指定文件,则会调用ctags对文件进行分析
  • Tlist_Get_Tag_Prototype_By_Line([{filename}, {linenumber}]) 获取指定文件中指定行号或之前标签的原型信息。如未指定文件名/行号,则使用当前缓冲区对应文件/当前行号
  • Tlist_Get_Tagname_By_Line ([{filename}, {linenumber}]) 获取指定文件中指定行号或之前标签的名称信息。如未指定文件名/行号,则使用当前缓冲区对应文件/当前行号
  • Tlist_Set_App({appname}) 设置正在控制taglist的插件名称

8. 其他

更多帮助,可参考Taglist Manual,或在Vim中执行以下命令获取

:help taglist.txt

nmap <F3> :TlistToggle<cr>               "绑定打开快捷键为F3

原创粉丝点击