指 随 意 动 , 移 动 如 飞 ( 二 ) zo – 打 开 光 标 下 的 折 叠 zO – 循 环 打 开 光 标 下 的 折 叠 , 也 就 是 说 , 如 果 存 在 多 级 折 叠 , 每 一 级 都 会 被 打 开 zc – 关 闭 光 标 下 的 折 叠 zC – 循 环 关 闭 光 标 下 的 折 叠 更 多 的 命 令 , 请 参 阅 手 册 (:help folding)。 vim 提 供 了 一 些 命 令 在 折 叠 间 快 速 移 动 : [z – 到 当 前 打 开 折 叠 的 开 始 ]z – 到 当 前 打 开 折 叠 的 结 束 zj – 向 下 移 动 到 下 一 个 折 叠 的 开 始 处 zk – 向 上 移 动 到 上 一 个 折 叠 的 结 束 处 我 通 常 不 喜 欢 把 文 本 折 叠 起 来 , 因 为 我 更 喜 欢 一 目 了 然 的 看 到 全 部 文 本 。 你 可 以 根 据 自 己 的 喜 好 来 决 定 是 否 启 用 折 叠 。 多 说 一 点 , 手 动 创 建 的 折 叠 是 可 以 保 存 在 session 文 件 中 的 , 这 样 下 次 进 入 vim 时 可 以 载 入 之 前 创 建 的 折 叠 , 参 见 :help 'sessionoptions'。 [ 在 程 序 中 移 动 ] vim 的 作 者 是 一 个 程 序 员 , 这 就 不 难 理 解 为 什 么 vim 提 供 了 众 多 在 程 序 中 移 动 的 命 令 。 这 里 面 既 包 括 我 们 前 面 的 文 章 中 介 绍 过 的 利 用 tag 文 件 及 cscope 在 标 签 间 跳 转 , 也 包 括 众 多 在 函 数 、 注 释 、 预 处 理 指 令 、 程 序 段 , 及 其 它 程 序 元 素 中 移 动 的 命 令 。 本 文 不 再 详 细 介 绍 这 些 命 令 , 作 为 程 序 员 , 一 定 要 熟 读 usr_29.txt! 这 些 命 令 , 可 以 帮 助 你 在 程 序 中 得 心 应 手 的 移 动 。 在 这 里 介 绍 两 个 插 件 , 增 强 了 在 程 序 中 移 动 的 功 能 , 一 个 是 a.vim, 另 外 一 个 是 matchit。 a.vim 的 功 能 非 常 简 单 , 它 帮 助 你 在 源 文 件 和 头 文 件 间 进 行 切 换 , 这 个 简 单 的 功 能 , 却 非 常 实 用 , 至 少 它 为 我 节 省 了 很 多 时 间 。 下 载 a.vim 后 , 把 它 放 到 你 的 .vim/plugin 目 录 就 可 以 了 。 假 设 你 正 在 浏 览 C 语 言 的 源 文 件 , 这 时 想 修 改 它 对 应 的 头 文 件 , 只 需 要 输 入 ":A" 命 令 , 就 切 换 到 头 文 件 了 ( 需 要 源 文 件 和 头 文 件 在 同 一 目 录 中 )。a.vim 插 件 还 定 义 了 其 它 一 些 命 令 和 快 捷 键 , 参 见 它 的 帮 助 手 册 。 在 vim 中 ,"%" 命 令 跳 转 到 与 当 前 项 目 相 匹 配 的 项 目 。 例 如 , 当 光 标 位 置 在 "{" 时 , 按 下 %, 光 标 就 跳 转 到 对 应 的 "}"( :help %)。 但 vim 提 供 的 % 命 令 , 只 能 在 括 号 , 或 者 C 注 释 的 开 始 和 结 束 ( /* */), 或 者 C 编 译 预 处 理 指 令 间 进 行 跳 转 。 对 于 其 它 程 序 结 构 , 例 如 HTML,% 命 令 不 能 从 标 记 , 跳 转 到 对 应 的 标 记 。 Matchit 插 件 则 扩 展 了 % 命 令 的 功 能 , 使 % 命 令 可 以 对 其 它 程 序 语 言 的 开 始 和 结 束 标 记 间 进 行 跳 转 。 下 载 后 , 把 这 个 插 件 放 到 你 的 .vim/plugin 目 录 , 你 就 可 以 用 % 在 各 种 开 始 / 结 束 标 记 间 跳 转 了 , 目 前 , 它 可 以 支 持 Ada, ASP with VBS, Csh, DTD, Essbase, Fortran, HTML, JSP (same as HTML), LaTeX, Lua, Pascal, SGML, Shell, Tcsh, Vim, XML 等 语 言 。 [ 插 入 模 式 下 的 移 动 ] 上 面 介 绍 的 移 动 命 令 , 都 是 在 normal 模 式 下 使 用 的 , 如 果 想 在 insert 模 式 下 移 动 , 阅 读 :help ins-special-special。 67
指 随 意 动 , 移 动 如 飞 ( 二 ) 你 真 的 需 要 在 插 入 模 式 下 移 动 吗 ? 我 几 乎 不 会 ! 通 常 我 会 先 按 ESC 返 回 Normal 模 式 , 然 后 再 移 动 , 当 你 习 惯 了 以 后 , 你 会 发 现 效 率 会 更 高 。 [ 小 结 ] 你 会 发 现 , 本 文 的 内 容 , 和 usr_03.txt 帮 助 文 档 很 相 似 。 是 的 , 只 要 你 学 会 了 usr_03.txt 中 列 出 的 命 令 , 你 就 掌 握 了 最 常 用 最 实 用 的 vim 移 动 命 令 (:help usr_03.txt)。 如 果 你 想 了 解 更 多 的 移 动 命 令 , 请 通 篇 阅 读 motion.txt, 记 住 你 最 有 可 能 用 到 的 那 些 键 。 当 你 的 手 指 能 够 不 假 思 索 的 使 用 这 些 命 令 后 , 你 在 vim 中 就 能 做 到 指 随 意 动 、 移 动 如 飞 了 。 [ 参 考 文 档 ] • vim 手 册 • vim 中 文 手 册