25.06.2015 Views

vim使用进阶

vim使用进阶

vim使用进阶

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

使 用 标 签 (tag) 文 件<br />

!_TAG_FILE_SORTED1{anything}<br />

上 面 这 个 标 记 说 明 tag 文 件 是 经 过 排 序 的 , 并 且 排 序 时 区 分 了 大 小 写 , 对 排 序 的 tag,vim 会 使 用<br />

二 分 法 来 进 行 查 找 , 大 大 加 快 了 查 找 速 度 ; 如 果 值 为 0, 则 表 示 tag 文 件 未 经 排 序 ; 如 果 值 为 2,<br />

则 表 示 tag 文 件 是 忽 略 大 小 写 排 序 的 。<br />

之 所 以 在 这 里 介 绍 tag 文 件 的 格 式 , 是 因 为 我 们 在 后 面 提 到 的 lookupfile 插 件 中 , 会 自 己 生 成 tag<br />

文 件 。<br />

虽 然 ctags 有 为 数 众 多 的 选 项 , 但 通 常 我 们 所 使 用 的 非 常 简 单 。 还 是 以 vim 7.0 的 代 码 为 例 , 我 们<br />

执 行 :<br />

cd ~/src/vim70<br />

ctags –R src<br />

上 面 这 条 命 令 会 在 ~/src/vim70/ 目 录 下 生 成 一 个 名 为 tags 的 文 件 , 这 个 文 件 中 包 含 ~/src/vim70/<br />

src/ 目 录 下 所 有 .c、.h 文 件 中 的 标 签 。 它 一 个 文 本 文 件 , 你 可 以 用 vim 打 开 它 看 一 下 。 此 文 件 缺<br />

省 按 区 分 字 母 大 小 写 排 序 , 所 以 直 接 可 以 被 vim 使 用 。<br />

现 在 我 们 进 入 vim, 执 行 下 面 的 命 令 :<br />

:cd ~/src/vim70 " 切 换 当 前 目 录 为 ~/src/vim70<br />

:set tags=tags " 设 置 tags 选 项 为 当 前 目 录 下 的 tags 文 件<br />

现 在 , 我 们 设 置 好 了 tags 选 项 , 接 下 来 我 们 使 用 它 :<br />

:tag VimMain<br />

你 会 看 到 vim 打 开 了 src/main.c 文 件 , 并 把 光 标 定 位 到 第 167 行 VimMain 上 。<br />

我 们 知 道 , 一 般 主 程 序 的 函 数 名 为 main, 如 果 你 尝 试 下 面 的 命 令 :<br />

:tag main<br />

# pri kind tag file<br />

1 F f main src/xxd/xxd.c<br />

main(argc, argv)<br />

2 FS d main src/if_python.c<br />

46<br />

Choice number ( cancels):<br />

这 里 并 没 有 src/main.c 文 件 , 怎 么 回 事 呢 ? 这 是 因 为 ctags 并 不 是 编 译 器 , 它 在 处 理 编 译 预 处 理<br />

指 令 受 到 局 限 , 因 此 并 没 有 生 成 src/main.c 中 main() 函 数 的 标 签 。 你 可 以 在 生 成 tag 文 件 时 给<br />

ctags 指 定 参 数 来 解 决 这 个 问 题 。 见 ctags 手 册 。<br />

或 者 你 可 以 用 ":grep" 或 ":vimgrep" 来 查 找 main( 这 篇 文 章 讲 解 grep 及 vimgrep 的 用 法 ):<br />

:cd ~/src/vim70<br />

:vimgrep /\/ src/*.c<br />

:cw<br />

18

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!