vim - Vi IMproved,程序员的文本编辑器
概要
vim [选项] [文件 ..]
vim [选项] vim [选项] -t 标签
vim [选项] -q [错误文件]
ex
view
gvim gview evim eview
rvim rview rgvim rgview
描述
Vim 是一种与 Vi 向上兼容的文本编辑器。它可以用于编辑各种纯文本。它特别适用于编辑程序。
与 Vi 相比,它有很多增强功能:多级撤销、多窗口和缓冲区、语法高亮、命令行编辑、文件名补全、在线帮助、可视化选择等。请参阅“:help vi_diff.txt”,以了解 Vim 和 Vi 之间的差异摘要。
在运行 Vim 时,可以通过在线帮助系统获得大量帮助,使用“:help”命令。请参阅下面的“在线帮助”部分。
通常 Vim 通过编辑单个文件来启动:
vim 文件
更一般地,Vim 的启动方式如下:
vim [选项] [文件列表]
如果缺少文件列表,编辑器将启动一个空缓冲区。否则,可以使用以下四个选项中的一个来选择要编辑的一个或多个文件。
文件 .. 一个文件名列表。第一个文件将是当前文件,并将其读入缓冲区。光标将定位在缓冲区的第一行。可以使用“:next”命令访问其他文件。要编辑以短划线开头的文件,请在文件列表前面加上“--”。
- 要编辑的文件从标准输入读取。命令从标准错误读取,标准错误应该是终端。
-t {标签} 要编辑的文件和初始光标位置取决于“标签”,这是一种跳转标签。在标签文件中查找 {标签},关联的文件成为当前文件,并执行关联的命令。通常,这用于 C 程序,在这种情况下,{标签} 可以是函数名。效果是包含该函数的文件成为当前文件,并且光标定位在该函数开始处。请参阅“:help tag-commands”。
-q [错误文件]
以快速修复模式启动。读取文件 [错误文件],并显示第一个错误。如果省略 [错误文件],则从 'errorfile' 选项获取文件名(对于 Amiga,默认为“AztecC.Err”,对于其他系统,默认为“errors.err”)。可以使用“:cn”命令跳转到其他错误。请参阅“:help quickfix”。
Vim 的行为取决于命令的名称(可执行文件可能仍然是同一个文件)。
vim “正常”方式,一切都是默认设置。
ex 以 Ex 模式启动。使用“:vi”命令进入普通模式。也可以使用“-e”参数来完成。
view 以只读模式启动。 您将受到保护,无法写入文件。 也可以使用“-R”参数实现。
gvim gview
GUI 版本。 启动一个新窗口。 也可以使用“-g”参数实现。
evim eview
GUI 版本的简易模式。 启动一个新窗口。 也可以使用“-y”参数实现。
rvim rview rgvim rgview
类似于以上,但带有限制。 将无法启动 shell 命令或挂起 Vim。 也可以使用“-Z”参数实现。
选项
选项可以以任何顺序给出,置于文件名之前或之后。 没有参数的选项可以组合在一个单独的短横线之后。
+[num] 对于第一个文件,光标将定位在第“num”行。 如果缺少“num”,则光标将定位在最后一行。
+/{pat} 对于第一个文件,光标将定位在包含 {pat} 的第一个匹配项的行中。 请参见“:help search-pattern”以获取可用的搜索模式。
+{command}
-c {command}
{command} 将在读取完第一个文件后执行。 {command} 被解释为 Ex 命令。 如果 {command} 包含空格,则必须用双引号括起来(这取决于所使用的 shell)。 例如:vim "+set si" main.c
请注意:您可以使用最多 10 个“+”或“-c”命令。
-A 如果 Vim 已使用 ARABIC 支持进行编译,以编辑从右到左的文本文件和阿拉伯语键盘映射,则此选项以阿拉伯语模式启动 Vim,即设置“arabic”。 否则,会显示错误消息并终止 Vim。
-b 二进制模式。 设置一些选项,以便可以编辑二进制或可执行文件。
-C 兼容模式。 设置“compatible”选项。 这将使 Vim 表现得更像 Vi,即使存在 .vimrc 文件。
-d 以差异模式启动。 应该有 2 到 8 个文件名参数。 Vim 将打开所有文件并显示它们之间的差异。 类似于 vimdiff(1)。
-d {device}, -dev {device}
在 Amiga 上,打开 {device} 以用作终端。 例如:"-d con:20/30/600/150"。
-D 调试模式。 在执行脚本中的第一个命令时,进入调试模式。
-e 以 Ex 模式启动 Vim,就像调用了“ex”可执行文件一样。
-E 以改进的 Ex 模式启动 Vim,就像调用了“exim”可执行文件一样。
-f 对于 GUI 版本,Vim 不会分叉并与启动它的 shell 分离。 在 Amiga 上,Vim 不会重新启动以打开一个新窗口。 此选项应在程序执行 Vim 时使用,该程序将等待编辑会话完成(例如,邮件)。 在 Amiga 上,":sh" 和 ":!" 命令将不起作用。
-F 如果 Vim 已使用 FKMAP 支持进行编译,以编辑从右到左的文本文件和波斯语键盘映射,则此选项以波斯语模式启动 Vim,即设置“fkmap”和“rightleft”。 否则,会显示错误消息并终止 Vim。
请注意:波斯语支持已在补丁 8.1.0932 中删除。
-g 如果 Vim 已编译支持 GUI,则此选项启用 GUI。如果未编译 GUI 支持,则会显示错误消息,Vim 将退出。
-H 如果 Vim 已编译支持编辑从右到左的文本文件和希伯来语键盘映射,则此选项以希伯来语模式启动 Vim,即设置 'hkmap' 和 'rightleft' 选项。否则,会显示错误消息,Vim 将退出。
-i {viminfo}
指定使用哪个文件来读取或写入 viminfo 文件,而不是默认的 "~/.viminfo"。也可以通过将名称设置为“NONE”来跳过使用 .viminfo 文件。
-l Lisp 模式。设置 'lisp' 和 'showmatch' 选项。
-L 与 -r 相同。
-m 禁用文件修改。重置 'write' 选项。仍然可以修改缓冲区,但无法写入文件。
-M 不允许修改。'modifiable' 和 'write' 选项将被取消,因此不允许进行更改,并且无法写入文件。请注意,可以设置这些选项以启用修改。
-n 不使用交换文件。这将使在崩溃后无法进行恢复。如果您想在非常慢的介质(例如软盘)上编辑文件,这将非常有用。也可以使用“:set uc=0”来完成。可以使用“:set uc=200”来撤消。
-N 不兼容模式。重置 'compatible' 选项。这将使 Vim 表现更好,但与 Vi 的兼容性较差,即使没有 .vimrc 文件。
-nb 成为 NetBeans 的编辑器服务器。有关详细信息,请参阅文档。
-o[N] 打开 N 个堆叠窗口。如果省略 N,则为每个文件打开一个窗口。
-O[N] 并排打开 N 个窗口。如果省略 N,则为每个文件打开一个窗口。
-p[N] 打开 N 个选项卡页面。如果省略 N,则为每个文件打开一个选项卡页面。
-P {parent-title}
仅限 Win32 GUI:指定父应用程序的标题。如果可能,Vim 将在父应用程序内的 MDI 窗口中运行。{parent-title} 必须出现在父应用程序的窗口标题中。请确保它足够具体。请注意,此实现仍然很基本。它无法与所有应用程序一起工作,并且菜单也无法正常工作。
-r 列出交换文件,并提供有关如何使用它们进行恢复的信息。
-r {file} 恢复模式。使用交换文件来恢复崩溃的编辑会话。交换文件是与文本文件具有相同名称并附加“.swp”的文件。请参阅“:help recovery”。
-R 只读模式。将设置 'readonly' 选项。仍然可以编辑缓冲区,但可以防止意外覆盖文件。如果您确实想覆盖文件,请在 Ex 命令中添加一个感叹号,例如“:w!”。-R 选项还意味着 -n 选项(请参见上述内容)。可以使用“:set noro”来重置 'readonly' 选项。请参阅“:help 'readonly'”。
-s 静默模式。仅当作为“Ex”启动或在启动时使用了“-e”选项时才生效。
-s {scriptin}
读取脚本文件 {scriptin}。文件中的字符将被解释为用户输入的字符。也可以使用命令“:source! {scriptin}”实现相同的功能。如果到达文件末尾后编辑器还没有退出,则会从键盘读取后续字符。
-S {file} {file} 将在读取完第一个文件后被读取。这等同于 -c "source {file}"。{file} 不能以 '-' 开头。如果省略 {file},“Session.vim”将被使用(仅当 -S 是最后一个参数时)。
-T {terminal}
告知 Vim 您正在使用的终端的名称。仅当自动检测方式不起作用时才需要。应该是一个 Vim 识别的终端(内置),或者在 termcap 或 terminfo 文件中定义。
-u {vimrc} 使用文件 {vimrc} 中的命令进行初始化。跳过所有其他初始化。用于编辑特殊类型的文件。也可以通过指定名称“NONE”来跳过所有初始化。有关更多详细信息,请参阅 vim 中的“:help initialization”。
-U {gvimrc} 使用文件 {gvimrc} 中的命令进行 GUI 初始化。跳过所有其他 GUI 初始化。也可以通过指定名称“NONE”来跳过所有 GUI 初始化。有关更多详细信息,请参阅 vim 中的“:help gui-init”。
-v 以 Vi 模式启动 Vim,就像可执行文件被命名为“vi”一样。这仅在可执行文件被命名为“ex”时才有效。
-V[N] 详细模式。显示有关读取和写入 viminfo 文件的文件以及其他操作的消息。可选的数字 N 是 'verbose' 的值。默认值为 10。
-V[N]{filename}
类似于 -V,并将 'verbosefile' 设置为 {filename}。结果是,消息不会显示在屏幕上,而是写入文件 {filename}。{filename} 不能以数字开头。
-w{number} 将 'window' 选项设置为 {number}。
-w {scriptout}
您输入的所有字符都将被记录到文件 {scriptout} 中,直到您退出 Vim。如果您想创建一个脚本文件,以便与“vim -s”或“:source!”一起使用,这将非常有用。如果 {scriptout} 文件存在,则字符将被追加。
-W {scriptout}
类似于 -w,但会覆盖现有文件。
-x 如果 Vim 已编译并支持加密,则在写入文件时使用加密。将提示输入加密密钥。
-X 不连接到 X 服务器。缩短终端中的启动时间,但窗口标题和剪贴板将无法使用。
-Y 不连接到 Wayland compositor
-y 以简单模式启动 Vim,就像可执行文件被命名为“evim”或“eview”一样。使 Vim 表现得像一个点击式编辑器。
-Z 受限模式。 效果类似于可执行文件以 "r" 开头启动。
-- 表示选项结束。 之后的所有参数将被视为文件名。
这可用于编辑以 "-" 开头的文件名。
--clean 不使用任何个人配置(vimrc、插件等)。 有助于查看问题是否在干净的 Vim 设置中重现。
--cmd {command}
类似于使用 "-c",但命令在处理任何 vimrc 文件之前执行。 您可以最多使用 10 个这些命令,与 "-c" 命令无关。
--echo-wid 仅适用于 GTK GUI:在标准输出上回显窗口 ID。
--gui-dialog-file {name}
在使用 GUI 时,不显示对话框,而是将对话框的标题和消息写入文件 {name}。 该文件将被创建或附加。 仅对测试有用,以避免测试因无法看到的对话框而卡住。 如果没有 GUI,则忽略该参数。
--help, -h, -?
提供关于命令行参数和选项的帮助。 之后 Vim 将退出。
--literal 将文件名参数视为字面值,不扩展通配符。 这对 Unix 没有影响,因为 shell 会扩展通配符。
--log {filename}
如果 Vim 已使用 eval 和 channel 功能编译,则启动日志并将条目写入 {filename}。 这类似于在启动期间非常早地调用 ch_logfile({filename}, 'ao')。
--nofork 前台。 对于 GUI 版本,Vim 不会分支并与启动它的 shell 分离。
--noplugin 跳过加载插件。 隐含于 -u NONE。
--not-a-term
告诉 Vim 用户知道输入和/或输出未连接到终端。 这将避免警告以及会发生的两秒延迟。
--remote 连接到 Vim 服务器并使其编辑给定的其余参数中的文件。 如果未找到服务器,则会显示警告,并在当前 Vim 中编辑文件。
--remote-expr {expr}
连接到 Vim 服务器,在其中评估 {expr},并将结果打印到标准输出。
--remote-send {keys}
连接到 Vim 服务器并将 {keys} 发送到服务器。
--remote-silent
与 --remote 相同,但在未找到服务器时没有警告。
--remote-wait
与 --remote 相同,但 Vim 不会在文件编辑完毕后退出。
--remote-wait-silent
与 --remote-wait 相同,但在未找到服务器时没有警告。
--serverlist
列出可以找到的所有 Vim 服务器的名称。
--servername {name}
将 {name} 用作服务器名称。 用于当前的 Vim,除非与 --remote 参数一起使用,否则它是要连接的服务器的名称。 如果正在使用 socketserver 后端,如果名称以 "/"、"./" 或 "../" 开头,则将其视为绝对路径、相对路径或相对于当前目录的路径。
--clientserver {backend}
将 {backend} 用作 clientserver 功能的后端,可以是 "socket" 或 "x11"。 仅在同时编译了 socketserver 和 X11 功能时可用。
--socketid {id}
仅限 GTK GUI:使用 GtkPlug 机制在另一个窗口中运行 gVim。
--startuptime {file}
在启动时,将计时消息写入文件 {fname}。
--ttyfail 如果 stdin 或 stdout 不是终端(tty),则立即退出。
--version 打印版本信息并退出。
--windowid {id}
仅限 Win32 GUI:使 gVim 尝试将窗口 {id} 作为父窗口,以便在其中运行。
在线帮助
在 Vim 中键入 ":help" 以开始使用。键入 ":help subject" 以获取特定主题的帮助。例如:":help ZZ" 以获取 "ZZ" 命令的帮助。使用
文件
/usr/local/share/vim/vim??/doc/*.txt
Vim 文档文件。使用 ":help doc-file-list" 以获取完整列表。 vim?? 是简短的版本号,例如 vim91 代表 Vim 9.1
/usr/local/share/vim/vim??/doc/tags
用于在文档文件中查找信息的标签文件。
/usr/local/share/vim/vim??/syntax/syntax.vim
系统范围内的语法初始化。
/usr/local/share/vim/vim??/syntax/*.vim
各种语言的语法文件。
/usr/local/share/vim/vimrc
系统范围内的 Vim 初始化。
~/.vimrc, ~/.vim/vimrc, $XDG_CONFIG_HOME/vim/vimrc
您的个人 Vim 初始化(找到的第一个将被使用)。
/usr/local/share/vim/gvimrc
系统范围内的 gvim 初始化。
~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc
您的个人 gVim 初始化(找到的第一个将被使用)。
/usr/local/share/vim/vim??/optwin.vim
用于 ":options" 命令的脚本,这是一种很好的方式来查看和设置选项。
/usr/local/share/vim/vim??/menu.vim
gVim 的系统范围内的菜单初始化。
/usr/local/share/vim/vim??/bugreport.vim
用于生成错误报告的脚本。请参阅 ":help bugs"。
/usr/local/share/vim/vim??/filetype.vim
用于通过文件名检测文件类型的脚本。请参阅 ":help 'filetype'"。
/usr/local/share/vim/vim??/scripts.vim
用于通过文件内容检测文件类型的脚本。请参阅 ":help 'filetype'"。
/usr/local/share/vim/vim??/print/*.ps
用于 PostScript 打印的文件。
有关最新信息,请阅读 VIM 主页:
参见
vimtutor(1)
作者
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' 选项。