名 称
vim - Vi IMproved, 一 个 程 序 员 的 文 本 编 辑 器
概 述
vim
[options] [file ..]
vim [options] -
vim [options] -t tag
vim [options] -q [errorfile]
ex
view
gvim gview evim eview
rvim rview rgvim rgview
描 述
Vim 是 一 个 同 Vi 向 上 兼 容 的 文 本 编 辑 器 。 它 可 以 用 来 编 辑 任 何 纯 文 本 。 它 特 别 适 合 用 来 编 辑 程 序 。 它 对 Vi 作 了 许 多 增 强 : 多 层 撤 销 、 多 窗 口 、 多 缓 冲 区 (buffer)、 高 亮 语 法 显 示 、 命 令 行 编 辑 、 文 件 名 补 全 、 在 线 帮 助 、 可 视 选 择 等 等 。 请 用 ":help vi_diff.txt" 查 看 Vim 和 Vi 之 间 差 别 的 摘 要 。 在 运 行 Vim 的 时 候 , 可 以 用 ":help" 命 令 获 得 很 多 帮 助 信 息 。 请 参 考 下 面 的 “ 在 线 帮 助 ”一 节 。 通 常 情 况 下 , vim 使 用 直 接 把 文 件 名 作 为 参 数 的 方 法 来 编 辑 文 件 :
vim 文 件 名 更 通 用 地 来 说 , Vim 使 用 下 述 方 式 从 命 令 行 启 动 :
vim [选 项 ] [文 件 列 表 ] 如 果 没 有 给 定 文 件 , 则 编 辑 器 会 打 开 一 个 空 的 缓 冲 区 。 否 则 就 会 用 下 面 四 个 中 的 一 个 方 式 来 选 择 要 编 辑 的 文 件 。
文 件 .. 文 件 名 列 表 。 第 一 个 会 作 为 当 前 文 件 读 入 缓 冲 区 。 光 标 会 停 在 缓 冲 区 的 第 一 行 。 您 可 以 使 用
":next" 命 令 转 到 其 它 的 文 件 。 如 果 要 编 辑 一 个 以 "-" 开 头 的 文 件 , 请 在 文 件 列 表 前 面 加 上 "--"。
- 从 标 准 输 入 读 取 要 编 辑 的 文 件 。 命 令 从 标 准 错 误 读 取 , 此 时 标 准 错 误 应 当 是 一 个
TTY。
-t {tag} 被 编 辑 的 文 件 和 光 标 的 初 始 位 置 由 标 记
(tag) 决 定 , 标 记
有 点 像 一 种 goto 标 签 (goto label). 在 标 记 文 件 中 找 到 标 记 , 相 应 的 文 件 成 为 当 前 文 件 , 相 应 的 命 令 被 执 行 . 这 种 方 式 常 用 于 C 程 序 , 标 记 就 是 函 数 名 , 当 前 文 件 就 是 包 含 那 个 函 数 的 文 件 , 光 标 停 留 在 函 数 的 开 始 处 . 见 ":help tag-commands"。
-q [errorfile] 运 行 时 进 入 快 速 修 复 模 式 . 读 取 [errorfile] 文 件 并 显 示 第 一 个 错 误 . 如 果 没 有 [errorfile] 文 件 , 文 件 名 由 ’errorfile’ 选 项 决 定 (在 Amiga 为 "AztecC.Err", 在 其 他 系 统 中 为 "errors.vim"). 可 以 用 ":cn" 命 令 跳 到 其 它 错 误 处 . 见 ":help quickfix"。
Vim 会 根 据 不 同 命 令 有 不 同 的 表 现 , 尽 管 它 们 可 能 是 一 个 可 执 行 文 件 .
vim 正 常 模 式 , 所 有 都 是 默 认 状 态
.
ex 以
Ex 模 式 运 行 . 用 ":vi" 命 令 进 入 正 常 模 式 . 也 可 以 加 上 "-e" 选 项 进 入 此 模 式 .
view 以 只 读 模 式 运 行
. 你 被 禁 止 写 文 件 . 也 可 以 加 上 "-R" 选 项 进 入
此 模 式 .
gvim gview
GUI 版 本 。 开 启 一 个 新 的 窗 口 . 也 可 以 加 上 "-g" 选 项 进 入 此 模 式 .
rvim rview rgvim rgview 同 上 面 的 相 同 , 只 是 加 上 了 限 制 , 不 能 运 行 shell 程 序 , 也 不 能 暂 停 Vim . 也 可 以 加 上 "-Z" 选 项 进 入 此 模 式 .
选 项 (OPTIONS)
所 有 选 项 都 可 以 以 任 何 顺 序 出 现 , 可 以 在 文 件 名 前 , 也 可 以 在 文 件 名 后 . 没 有 参 数 的 选 项 可 以 出 现 在 一 个 "-" 后 面 .
+[num] 对 于 第 一 个 文 件 , 光 标 会 停 在 第
"num" 行 . 如 果 没 有 "num"
, 则 光 标 会 停 在 最 后 一 行 .
+/{pat} 对 于 第 一 个 文 件 , 光 标 会 停 在
{pat} 第 一 次 出 现 的 地 方 . 搜 寻
模 式 见 ":help search-pattern"。
+{command}
-c {command} 读 入 第 一 个 文 件 后 会 执 行 {command} 命 令 . {command} 应 为 Ex 命 令 . 如 果 {command} 中 包 含 有 空 格 , 必 须 用 双 引 号 括 住 (这 个 取 决 于 所 用 的 shell). 例 : Vim "+set si" main.c 注 意 : 你 最 多 可 以 用 10 个 "+" 或 者 "-c" 命 令 .
-b 二 进 制 模 式
. 设 置 一 些 选 项 , 这 样 就 可 以 用 来 编 辑 二 进 制 和
可 执 行 文 件 了 .
-C 兼 容
. 设 置 ’compatible’ 选 项 . 这 样 就 算 存 在 .vimrc 文 件
Vim 也 会 基 本 上 象 Vi 一 样 了 .
-d {device} 打 开
{device} 用 作 终 端 , 只 在 Amiga 下 。 例 : "-d
con:20/30/600/150".
-e 以
Ex 模 式 运 行 Vim , 就 像 运 行 "ex" 一 样 。
-f 前 台
运 行 。 对 于 GUI 版 本 , Vim 不 会 同 运 行 它 的 shell 分 离 。 在 Amiga 中 , Vim 不 会 重 新 启 动 来 开 启 一 个 新 窗 口 . 这 个 选 项 会 用 在 当 Vim 被 另 外 一 个 程 序 执 行 , 并 且 这 个 程 序 想 等 编 辑 动 作 结 束 后 再 运 行 的 时 候 (如 mail). 在 Amiga 上 ":sh" 和 ":!" 不 会 起 作 用 .
-F
如 果 Vim 编 译 时 加 入 了 对 从 右 到 左 书 写 的 文 件 FKMAP 以 及 Farsi 键 盘 映 射 的 支 持 , Vim 会 以 Farsi 模 式 运 行 , 比 如 设 置 ’fkmap’ 和 ’rightleft’ 选 项 .不 然 Vim 会 显 示 一 条 错 误 信 息 并 终 止 .
-g
如 果 Vim
编 译 时 加 入 GUI 支
持 , 会 开 启 GUI, 不 然
Vim 会 显 示 一 条
错 误 信 息 并 终
止 .
-h
Vim 显 示 命 令 行 参 数 和 选 项 的 帮 助 , 然 后 终 止 .
-H
如 果 Vim 编 译 时 加 入 了 对 从 右 到 左 书 写 的 文 件 RIGHTLEFT 以 及 Hebrew 键 盘 映 射 的 支 持 , Vim 会 以 Hebrew 模 式 运 行 , 比 如 设 置 ’hkmap’ 和 ’rightleft’ 选 项 . 不 然 Vim 会 显 示 一 条 错 误 信 息 并 终 止 .
-i {viminfo} 准 许 使 用 viminfo 文 件 , 这 个 选 项 设 置 使 用 的 文 件 名 , 默 认 的 是 "~/.viminfo". 用 "NONE" 文 件 名 也 可 以 跳 过 使 用 .viminfo 文 件 .
-L 同
-r 一 样 .
-l
Lisp 模 式 . 打 开 ’lisp’ 和 ’showmatch’ 选 项 .
-m 禁 止 修 改 文 件
. 设 置 ’write’ 选 项 , 这 样 就 不 能 写 文 件 了 .
-N 非 兼 容 模 式
. 设 置 ’compatible’ 选 项 . 这 样 Vim 会 表 现 得 更 好 , 就 算 .vimrc 文 件 不 存 在 也 会 同 Vi 不 兼 容 .
-n 禁 止 交 换 文 件 , 这 样 在 崩 溃 后 就 不 能 恢 复 文 件 了
. 对 于 编 辑
在 很 慢 的 媒 体 中 的 文 件 很 有 好 处 (比 如 软 盘 ), 也 可 以 用 ":set uc=0" 禁 止 交 换 , 用 ":set uc=200" 开 启 交 换 .
-o[N] 打 开
N 个 窗 口 . 如 果 没 有 N, 为 每 个 文 件 开 一 个 窗 口 .
-R 只 读
模 式 . 设 置 ’readonly’ 选 项 . 你 仍 然 可 以 编 辑 缓 冲 区 , 但 是 不 能 重 写 文 件 . 如 果 你 要 重 写 文 件 , 必 须 在 Ex 命 令 中 用 惊 叹 号 , 比 如 ":w!". -R 选 项 隐 含 了 -n 选 项 (见 下 ). ’readonly’ 选 项 可 以 用 ":set noro" 设 置 . 见 ":help ’readonly’".
-r
列 出 交
换 文 件 , 显 示 关
于 恢 复 文 件 的
信 息 .
-r {file} 恢 复 模 式 . 交
换 文 件 是 用 来
恢 复 在 编 辑 过
程 中 崩 溃 了 的
文
件 . 交 换 文 件 名 是 被 编 辑 文 件 名 后 面 加 上 ".swp". 见 ":help recovery".
-s 安 静 模 式
. 只 在 用 "Ex" 启 动 或 者 用 了 "-e" 选 项 才 有 用 .
-s {scriptin} 读 入
脚 本 文 件 {scriptin}. 文
件 里 的 字 符 就
像 你 直 接 输 入
一 样 的 , 也 可 以
用 ":source! {scriptin}" 命 令
实 现 这 个 功 能 .
如 果 在 编 辑 器
结 束 前 就 读 到
了 文 件 尾 , 就 接
着 从 键 盘 读 入 .
-T {terminal} 告 诉 Vim 你 用
的 终 端 的 名 字 ,
只 有 当 不 能 自
动 确 定 的 时 候
才 这 样 . 它 必 须
是 Vim (builtin) 能 辨 认
的 终 端 或 者 是
在 termcap 或 者 terminfo 文
件 中 定 义 了 的 .
-u {vimrc} 用
{vimrc} 文 件 里 的 命 令 来 初 始 化 , 跳 过 所 有 其 它 的 初 始
化 , 用 这 个 来 编 辑 特 殊 类 型 的 文 件 . 也 可 以 用 "NONE" 来 跳 过 所 有 初 始 化 . 在 vim 中 用 ":help initialization" 查 看 更 多 信 息 .
-U {gvimrc} 用
{gvimrc} 文 件 里 的 命 令 来 初 始 化 GUI, 跳 过 所 有 其 它 的
GUI 初 始 化 , 也 可 以 用 "NONE" 来 跳 过 所 有 GUI 初 始 化 . 在 vim 中 用 ":help gui-init" 查 看 更 多 信 息 .
-V 冗 长 显 示
. 显 示 执 行 初 始 化 代 码 和 读 入 的 文 件 , 并 且 写
viminfo 文 件 .
-v 以
Vi 模 式 运 行 Vim , 就 像 运 行 "vi" 一 样 , 只 有 运 行 "ex" 时
才 有 用 .
-w {scriptout} 所
有 在 Vim 退 出 前
你 键 入 的 字 符
都 会 被 存 入 {scriptout}
文 件 . 这 用 来 创
建 一 个 脚 本 文
件 , 你 可 以 用 "vim
-s" 和 ":source!" 来 使
用 . 如 果 {scriptout} 存 在 ,
会 把 字 符 追 加
到 后 面 .
-W {scriptout} 同 -w 一 样 ,
但 是 是 覆 盖 原
来 的 文 件 .
-x 写 文 件 时 加 密
. 会 提 示 你 输 入 密 码 .
-Z 受 限 模 式
. 同 运 行 以 "r" 开 头 的 程 序 同 效 .
-- 表 明 选 项 结 束
. 在 此 之 后 的 参 数 都 会 被 认 为 是 文 件 名 , 可 以
用 这 个 来 编 辑 一 个 以 ’-’ 开 头 的 文 件 .
在 线 帮 助 (ON-LINE HELP)
在 Vim 中 键 入 ":help" 来 获 得 帮 助 . 用 ":help subject" 来 获 得 关 于 一 个 特 定 主 题 的 帮 助 . 例 如 用 ":help ZZ" 来 获 得 关 于 "ZZ" 的 帮 助 . 用 <Tab> 和 CTRL-D 来 完 成 帮 助 主 题 (":help cmdline-completion"). 可 以 用 标 记 从 一 个 地 方 跳 到 另 一 个 地 方 (有 点 像 超 文 本 连 接 , 见 ":help"). 所 有 的 文 档 都 可 以 这 样 来 浏 览 , 比 如 ":help syntax.txt".
文 件
/usr/share/vim/vim80/doc/*.txt
Vim 的 文 档 文 件 。 请 使 用 ":help doc-file-list" 获 得 完 整 的 列 表 。
/usr/share/vim/vim80/doc/tags
在 文 档 文 件 中
查 找 信 息 用 的
标 签 文 件 。
/usr/share/vim/vim80/syntax/syntax.vim 系 统
层 面 的 语 法 初
始 化 文 件 。
/usr/share/vim/vim80/syntax/*.vim 各 种 语
言 的 语 法 文 件
。
/usr/share/vim/vimrc 系 统 层 面
的 Vim 初 始 化 文
件 。
~/.vimrc 您 的 个 人
Vim 初 始 化 文 件 。
/usr/share/vim/gvimrc 系 统 层 面 的 gvim 初 始 化 文 件 。
~/.gvimrc 您 的 个 人
gvim 初 始 化 文 件 。
/usr/share/vim/vim80/optwin.vim
":options" 命 令 所 用 的 脚 本 文 件 , 这 是 个 查 看 和 设 置 选 项 的 好 方 法 。
/usr/share/vim/vim80/menu.vim
系 统 层 面 的 gvim 菜
单 初 始 化 文 件
。
/usr/share/vim/vim80/bugreport.vim 用 来
生 成 错 误 报 告
的 脚 本 文 件 。
详 见 ":help bugs"。
/usr/share/vim/vim80/filetype.vim 根 据 文
件 名 来 判 定 文
件 类 型 的 脚 本
文 件 。 详 见 ":help
’filetype’"。
/usr/share/vim/vim80/scripts.vim 根 据 文
件 内 容 来 判 定
文 件 类 型 的 脚
本 文 件 。 详 见
":help ’filetype’"。
/usr/share/vim/vim80/print/*.ps 用 于 PostScript
打 印 的 文 件 。
要 了 解 最 新 信
息 , 请 查 看 VIM 主
页 :
<URL:http://www.vim.org/>
参 见
作 者
Vim 的 大 部 分 都 是 Bram Moolenaar 在 很 多 人 的 帮 助 下 完 成 的 。 请 见 vim 下 的 ":help credits"。 虽 然 不 大 可 能 还 有 原 始 的 代 码 存 在 , 但 是 Vim 仍 然 是 基 于 Stevie 写 的 代 码 , 之 后 被 Tim Thompson、 Tony Andrews 和 G.R. (Fred) Walter 修 改 而 成 的 。
缺 陷
也 许 有 吧 。 请 用 ":help todo" 查 看 已 知 问 题 的 列 表 。 请 留 意 , 有 不 少 地 方 可 能 被 其 他 人 视 为 缺 陷 与 错 误 , 但 实 际 上 这 只 是 因 为 程 序 忠 实 地 还 原 了 Vi 的 行 为 操 作 。 如 果 你 觉 得 有 些 地 方 “因 为 和 Vi 的 行 为 不 一 样 ”而 应 该 是 错 误 的 , 也 许 你 应 该 再 仔 细 阅 读 一 下 vi_diff.txt 文 件 ( 或 者 在 Vim 中 输 入 "help vi_diff.txt") 。 您 也 应 该 查 一 查 “compatible”和 “cpoptions”选 项 的 用 法 。
[中 文 版 原 维 护 人 ]
唐 友 <tony_ty [AT] 263.net>
[中 文 版 原 最 新 更 新 ]
2001年8月30日
[原 中 国 Linux论 坛 man手 册 页 翻 译 计 划 ]
跋
本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 获 取 日 期 : 2016年12月14日 翻 译 日 期 : 2016年12月18日 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh