25.06.2015 Views

vim使用进阶

vim使用进阶

vim使用进阶

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

开 启 文 件 类 型 检 测<br />

" Only do this when not done yet for this buffer<br />

if exists("b:did_ftplugin")<br />

finish<br />

endif<br />

这 类 似 于 C 语 言 头 文 件 中 的 "#ifndef XXX | #define XXX" 的 语 句 , 可 以 防 止 该 插 件 被 执 行 多 次 。<br />

因 此 , 把 这 个 插 件 拷 贝 到 $HOME/.vim/plugin 中 ( 这 个 目 录 在 runtimepath 中 排 在 最 前 面 ), 它 将<br />

先 于 vim 的 缺 省 插 件 被 加 载 ; 而 它 加 载 后 ,vim 的 缺 省 文 件 类 型 插 件 就 不 会 再 被 加 载 了 。 这 就 达 到<br />

了 我 们 修 改 设 置 的 目 的 。<br />

不 过 我 们 通 常 不 用 这 种 方 法 。 如 果 这 样 做 , 一 旦 vim 的 缺 省 插 件 做 了 改 变 , 我 们 也 要 更 新 我 们 改<br />

过 的 插 件 才 行 。 我 们 可 以 在 载 入 全 局 插 件 以 后 否 决 一 些 设 置 。 在 Unix 上 , 我 们 可 以 把 我 们 的 设<br />

置 放 在 ~/.vim/after/ftplugin/ 目 录 中 , 这 个 目 录 中 的 脚 本 会 在 vim 的 缺 省 脚 本 后 执 行 。 这 样 就<br />

可 以 修 改 配 置 , 或 增 加 我 们 自 己 的 定 义 。<br />

举 个 例 子 , 在 多 人 一 起 开 发 项 目 时 , 为 了 使 代 码 风 格 尽 量 保 持 一 致 , 一 般 不 允 许 在 代 码 使 用 TAB<br />

符 , 而 以 4 个 空 格 代 之 。 我 们 可 以 编 辑 一 个 文 件 , 包 含 下 面 的 内 容 :<br />

set shiftwidth=4<br />

set expandtab<br />

把 这 个 文 件 保 存 为 ~/.vim/after/ftplugin/c.vim。 这 样 , 每 次 在 编 辑 c 文 件 时 , 它 的 自 动 缩 进 为<br />

4 个 空 格 ; 当 你 在 插 入 模 式 下 使 用 CTRL-D、CTRL-T 缩 进 时 , 它 也 会 调 整 4 个 空 格 的 缩 进 ; 当 你 按<br />

TAB 键 时 , 它 将 会 插 入 8 个 空 格 ...... 如 果 你 想 上 面 的 设 置 对 h 文 件 也 生 效 的 话 , 需 要 把 它 另 存 一<br />

份 :~/.vim/after/ftplugin/cpp.vim, 因 为 h 文 件 的 文 件 类 型 被 设 为 cpp。<br />

我 们 知 道 ,vim 在 设 置 文 件 类 型 时 , 会 触 发 FileType 自 动 命 令 , 因 此 , 上 面 的 例 子 可 以 用 下 面 的<br />

自 动 命 令 来 实 现 :<br />

autocmd FileType c,cpp set shiftwidth=4 | set expandtab<br />

把 这 个 命 令 放 在 你 的 vimrc 中 , 可 以 起 到 和 上 例 同 样 的 效 果 。<br />

vim 的 语 法 高 亮 功 能 , 也 要 用 到 文 件 类 型 , 来 对 不 同 的 关 键 字 进 行 染 色 。 这 我 们 将 在 下 一 篇 文 章<br />

中 介 绍 。<br />

[ 参 考 文 档 ]<br />

• vim 手 册<br />

• vim 中 文 手 册<br />

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

Saved successfully!

Ooh no, something went wrong!