`
isiqi
  • 浏览: 16487461 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Linux编辑器--vim的tag29.1

阅读更多

vim是Linux下一款功能十分强大的编辑器。将vim打造成编程利器,不仅仅需要学习vim的用法,还需要使用一些插件。

首先介绍vim中标签的用法。以下是对vim帮助的29章进行的翻译:

29.1使用tags

tags是定义标识符的地方。例如在c和c++程序中的函数定义。tags的列表在一个tags文件中维护。这个可以被vim用以直接的从任何地方跳转到tag,也就是定义了标识符的地方。

如果要成成所有当前目录下的C文件的tags文件,使用如下命令:

ctags *.c

ctags是一个独立的程序。多数Unix系统已经自动安装了它。如果没有安装,请访问如下地址:

http://ctags.sf.net

现在当你在vim中并且希望到达一个函数定义的时候,你可以使用如下命令进行跳转了:

:tag startlist

这个命令将会发现函数“startlist”,即使该函数在另外一个文件中。这使得查看混乱的C代码变得非常简单。例如,你在查看函数“write_block”,而该函数中调用了“write_line”。但是“write_line”做了什么呢?将光标移动到“write_line”上,并且使用CTRL_J,你就可以跳转到这个函数的定义了。

函数“write_line”调用了“write_char”。你需要查看这个函数做了什么。你将光标位置放到write_char上,然后按下CTRL_J即可跳转到函数的定义。

命令“:tags”可以显示使用的tags的列表。

如果要回去,使用CTRL-T即可跳转到之前的tag。这个命令有一个count参数作为其前缀,可以表明回转的tags数。再一次向前跳转,可以使用:tag到list的最上边。如果要跳转过数个tags,可以使用一个count参数,例如:"3tag"。CTRL-T也可以以一个count为前缀使用。

这些命令允许你使用CTRL-J正向查看调用树,然后使用CTRL-T回退。并且使用":tags"查看你在哪里。

分屏显示

”:tag“命令将会使用包含新函数的文件,替换当前window显示的文件。但是假设你不仅仅想看原来的函数,也想看到新的函数,应该怎么办?你可以分屏显示,在":tag"命令前,使用":split"命令。Vim有一个简单的命令,可以做到这一点:

:stag tagname

这样分屏,并且跳转到光标下的tag,可以使用CTRL-W J。

如果指定一个count,新的window的高度,将会是那样的。

更多的TAGS文件

当你在很多目录下有文件,你可以在每个目录下创建一个tags文件。vim将会仅仅能够跳转到这一个目录下的tags,而不能跳转到其他目录下的tags。

让vim查找更多tags文件,使用set tags命令做到。例如:

:set tags=./tags,./../tags,./*/tags

这将使得vim在上层、本次和所有子层下进行查找。你可以使用完全目录树来进行定义。

整合成一个TAGS文件

vim在不得不在多个目录下搜索tags文件的时候,将会变得较低效。这种情况下,最好做一次产生一个大的tags文件的操作。

ctags -R . 可以对当前目录下,所有目录递归的进行搜索,产生一个tags文件。

一个非常好的事情是,ctags程序能够识别多种文件类型。不仅仅对于C和C++程序,对于Eiffel甚至vim 脚本都是。了解更多请参考ctags帮助文档。

现在你仅仅需要告知vim 你的大的tags文件的目录,就可以了。

多匹配

当一个函数多次被定义的时候(或者一个类中的方法),":tag"将跳转到第一个。如果在当前文件中有匹配,则这个就是第一个。你可以使用如下命令跳转到另外一个匹配tag上:

:tnext

如果匹配很多,你可以选择一个跳转。

:tselect tagname

这样,vim将给你显示一个选择的表。

表中的第一列是匹配号。输入这个号,你就可以跳转到这个匹配上。

在匹配tags中进行转换,你可以使用如下命令:

:tfirst :[count]tprevious :[count]tnext :tlast。count默认是1.

猜测TAG名字

使用tab键可以进行tag名字补足。tab将会先产生第一个匹配,继续tab即可切换到下一个。你也可以使用模糊匹配。例如,

:tag /block ,跳转到有block的tag。

现在,使用tab,vim将会查找所有包含block的匹配,并使用第一个。

在tag名字前的/告诉vim,跟随的是模式匹配。你可以使用模式匹配的方式使用任何命令。例如选择,

:tselect /^write_ 是告诉vim选择以”write_“开始的tag。^表示以其开头,$表示以其结尾。

TAGS的浏览

CTRL-J带你跳转到光标指定tag的定义,你可以将标识符名称作为一个表格的内容。这是个例子。

首先,创建一个标识符列表,这需要ctags。

ctags --c-types=f -f functions *.c

现在开启vim,并不使用file作为参数。在vim中编辑这个文件,以垂直分屏方式。

vim

:vsplit functions

Windows包含所有函数的列表。当然,还有更多你可以忽略的东西。使用:setlocal ts=99可以整理下。在这个Window,定义一个映射:

:nnmoremap <buffer> <CR> 0ye<C-W>w:tag <C-R>"<CR>

将鼠标移到包含你想跳转的函数的哪行,输入回车。vim将会跳转到另外一个window并且跳转到选择的函数。

相关选项

你可以 设置 ‘ignorecase’使得tag名字的大小写被忽略。

tagbsearch选项告知,是否tags文件被排序或者不排序。默认是假定是一个排序的tags文件,这使得匹配更快,但是如果没排序,则没有什么用了。

taglength则可以告知vim在一个tag中忽略的标识符多少。

当你使用SNiFF+程序,你可以使用vim提供给sniff的接口。SNiFF+是一个商业程序。

Cscope是一个免费程序。它不仅仅发现标识符在哪声明,也可以发现在哪被使用。

分享到:
评论

相关推荐

    Linux 实操篇- Vi 和Vim 编辑器-开机、重启和用户登录注销-用户管理

    Linux 实操篇- Vi 和Vim 编辑器-开机、重启和用户登录注销-用户管理

    Linux编辑器-vim使用

    Linux编辑器-vim使用

    Atom-atom-vim-mode-plus,vim.zip

    Atom-atom-vim-mode-plus是针对Atom文本编辑器的一个扩展插件,主要目的是增强其内置的VIM编辑模式。VIM(Vi Improved)是一种高度可配置的文本编辑器,以其高效的操作方式和丰富的命令集而闻名。在Atom中,VIM模式...

    linux---vim用户手册

    Vim有许多优秀的插件,如NERDCommenter用于注释管理,Vim-Fugitive用于Git操作。通过.vimrc文件,你可以定制个人的Vim环境,如设置颜色方案、修改默认行为等。 **9. 学习资源** Vim有详尽的在线文档和用户手册,如...

    vim-colors-solarized, vim文本编辑器的精确 colorscheme.zip

    vim-colors-solarized, vim文本编辑器的精确 colorscheme 标题描述作者创建的颜色已经修改用于Vim的Solarized colorscheme机器和人员的精确颜色Schoonover浅黄色2011 152011年 16用于Vim的 Solarized colorsche

    Linux 基础 002-vi简介-02-vi和vim以及vi的特点.flv

    Linux 基础 002-vi简介-02-vi和vim以及vi的特点.flv

    linux-文本编辑器Vim使用视频教程

    05.1 文本编辑器Vim-Vim常用操作.mp4 05.2 文本编辑器Vim-Vim使用技巧.mp4

    Linux文本编辑器-vim.pdf

    "Linux文本编辑器Vim的使用和应用" Linux文本编辑器Vim是一个功能丰富且强大的文本编辑器,被广泛用于Linux系统。它是Vi的增强版本,提供了更多的功能和改进,同时可以通过插件扩展其功能。Vim提供了三种模式:命令...

    Vi Improved-----Vim

    《Vi Improved-----Vim》是一本关于Vim编辑器的全面使用教程,本书共分为17章,内容覆盖从基础到高级的Vim使用技巧,旨在满足不同水平用户的需求。Vim编辑器是文本编辑领域极为强大的工具之一,它以高效著称,能够...

    linux-vimminimap为Vim实现一个类似于Sublime编辑器的侧栏代码迷你地图

    Linux开发领域中,Vim作为一个强大的文本编辑器,深受程序员喜爱。然而,其默认界面相对简洁,有时缺少一些现代化IDE的便利特性,如代码迷你地图。"Linux-vimminimap"项目正是为了解决这个问题,它为Vim添加了一个...

    Linux运维-云计算 基础全栈-153 服务管理-2.2 1vim编辑技巧02.mp4

    Linux运维-云计算 基础全栈-153 服务管理-2.2 1vim编辑技巧02.mp4

    Go-vim-go-Vim的Go开发插件

    `vim-go`是Vim编辑器中一个强大的Go语言开发插件,由fatih维护。它为Vim提供了丰富的功能,旨在提升Go程序员的开发效率和代码质量。这个插件包含了调试、语法高亮、自动补全、代码跳转、格式化、重构等多个方面的...

    linux-xmake的vim插件

    2. **获取插件**:从源码仓库(如GitHub)下载xmake.vim-master压缩包。 3. **解压安装**:将压缩包解压到Vim的插件目录,通常为~/.vim/bundle或~/.config/nvim/plugged(取决于Vim版本和配置)。 4. **启用插件管理...

    linux-simpletermvim在vim中的简单终端

    在Linux开发环境中,Vim作为一个强大的文本编辑器,以其高度可定制性和高效性深受程序员喜爱。然而,有时候我们需要在编辑代码的同时运行命令或者进行交互式操作,这时内置一个终端功能就显得尤为方便。`simpleterm....

    Linux 本编辑器vim显示utf-8文档乱码的解决方法.docx

    在 Linux 系统中,Vim 是一种常用的文本编辑器,但是在使用 Vim 的时候,经常会遇到 UTF-8 文档乱码的问题。为了解决这个问题,我们需要了解 Vim 中的四个与编码有关的选项:fileencodings、fileencoding、encoding ...

    Linux中vim安装包

    **Linux中的Vim编辑器** Vim(Vi Improved)是一款强大的文本编辑器,在Linux系统中广泛使用。它基于早期的Vi编辑器,并进行了大量的增强和改进,提供了丰富的特性集,适用于程序员、系统管理员以及普通用户。Vim在...

Global site tag (gtag.js) - Google Analytics