Usr_02

Nvim :help 页面,生成源代码,使用 tree-sitter-vimdoc 解析器。


VIM 用户手册 - 由 Bram Moolenaar 编写
Vim 入门
本章提供足够的信息来使用 Vim 编辑文件。虽然编辑方式可能不高效或快速,但你能够进行编辑。花点时间练习这些命令,它们构成了后续内容的基础。
02.1 首次运行 Vim 02.2 插入文本 02.3 导航 02.4 删除字符 02.5 撤销和重做 02.6 其他编辑命令 02.7 退出 02.8 寻求帮助
下一章: usr_03.txt 导航 上一章: usr_01.txt 关于手册 目录: usr_toc.txt

首次运行 Vim

要启动 Vim,输入以下命令
gvim file.txt
在 Unix 系统上,你可以在任何命令提示符下输入此命令。如果你正在运行 Microsoft Windows,请打开命令提示符并输入该命令。无论哪种情况,Vim 都将开始编辑名为 file.txt 的文件。由于这是一个新文件,你将看到一个空白窗口。这是你屏幕上的样子
+---------------------------------------+
|#                                        |
|~                                        |
|~                                        |
|~                                        |
|~                                        |
|"file.txt" [New]                        |
+---------------------------------------+
        ('#' is the cursor position.)
波浪线 (~) 表示文件之外的线条。换句话说,当 Vim 没有足够的文件内容显示时,它将显示波浪线。屏幕底部有一条消息行,指示该文件名为 file.txt 并且你正在创建一个新文件。消息信息是临时的,其他信息会覆盖它。

VIM 命令

gvim 命令会导致编辑器创建一个新的窗口进行编辑。如果你使用此命令
vim file.txt
编辑将在你的命令窗口内进行。换句话说,如果你在 xterm 内运行,编辑器将使用你的 xterm 窗口。如果你正在使用 Microsoft Windows 下的命令提示符,编辑将在该窗口内进行。两个版本的窗口中的文本看起来会一样,但 gvim 拥有额外的功能,比如菜单栏。稍后会详细介绍。

02.2 插入文本

Vim 编辑器是一个模态编辑器。这意味着编辑器的行为会有所不同,具体取决于你所处的模式。两种基本模式称为正常模式和插入模式。在正常模式下,你输入的字符是命令。在插入模式下,字符被插入为文本。由于你刚刚启动 Vim,它将处于正常模式。要进入插入模式,请键入 "i" 命令(i 代表插入)。然后你可以输入文本。它将被插入到文件中。如果出现错误,请不要担心;你可以在以后纠正它们。要输入以下程序员的打油诗,你需要输入以下内容
iA very intelligent turtle
Found programming Unix a hurdle
在键入 "turtle" 后,按 <Enter> 键开始新的一行。最后,按 <Esc> 键停止插入模式并返回正常模式。现在你的 Vim 窗口中有两行文本
+---------------------------------------+
|A very intelligent turtle                |
|Found programming Unix a hurdle        |
|~                                        |
|~                                        |
|                                        |
+---------------------------------------+
什么是模式?
为了能够看到你所处的模式,请键入以下命令
:set showmode
你会注意到,当键入冒号时,Vim 会将光标移动到窗口的最后一行。这就是你键入冒号命令的地方(以冒号开头的命令)。通过按 <Enter> 键完成此命令(所有以冒号开头的命令都以这种方式完成)。现在,如果你键入 "i" 命令,Vim 将在窗口底部显示 --INSERT--。这表示你处于插入模式。
+---------------------------------------+
|A very intelligent turtle                |
|Found programming Unix a hurdle        |
|~                                        |
|~                                        |
|-- INSERT --                                |
+---------------------------------------+
如果你按 <Esc> 键返回正常模式,最后一行将变为空白。

摆脱困境

对于 Vim 新手来说,其中一个问题是模式混淆,这可能是由于忘记了当前的模式,或者不小心键入了切换模式的命令造成的。无论你处于哪种模式,要返回正常模式,请按 <Esc> 键。有时你可能需要按两次。如果 Vim 对你发出蜂鸣声,则表示你已经处于正常模式。

02.3 导航

返回正常模式后,你可以使用以下键进行导航
h 左移 hjkl
j 下移 k 上移 l 右移
起初,这些命令可能看起来是随机选择的。毕竟,谁听说过使用 l 表示右移?但实际上,这些选择有很好的理由:移动光标是你在编辑器中进行的最常见的操作,而这些键位于右手的主行上。换句话说,这些命令被放置在你能够最快键入的位置(尤其是在你使用十指输入时)。
注意: 你也可以使用箭头键移动光标。但是,这样做会大大降低你的编辑速度,因为要按箭头键,你必须将手从文本键移动到箭头键。考虑到你可能在一小时内这样做数百次,这会浪费大量时间。此外,有些键盘没有箭头键,或者将它们放置在不同寻常的位置;因此,了解 hjkl 键的使用有助于应对这些情况。
记住这些命令的一种方法是,h 位于左侧,l 位于右侧,j 指向下方。如下图所示
    k
h     l
  j
学习这些命令的最佳方法是使用它们。使用 "i" 命令插入一些额外的文本行。然后使用 hjkl 键进行导航,并在某个地方插入一个单词。不要忘记按 <Esc> 键返回正常模式。:Tutor 也是一种通过实践学习的好方法。
对于日语用户,Hiroshi Iwatani 建议使用以下方法
Komsomolsk ^ | Huan Ho <--- ---> Los Angeles (黄河) | v Java (岛屿,而非编程语言)

02.4 删除字符

要删除一个字符,将光标移动到该字符上,然后键入 "x"。(这是一种向打字机时代致敬的方式,当时人们通过在要删除的内容上键入 xxxx 来进行删除。)将光标移动到第一行的开头,例如,键入 xxxxxxx(七个 x),以删除 "A very "。结果应该如下所示
+---------------------------------------+
|intelligent turtle                        |
|Found programming Unix a hurdle        |
|~                                        |
|~                                        |
|                                        |
+---------------------------------------+
现在你可以插入新文本,例如,键入
iA young <Esc>
这会开始插入(i)、插入单词 "A young",然后退出插入模式(最后的 <Esc>)。结果
+---------------------------------------+
|A young intelligent turtle                |
|Found programming Unix a hurdle        |
|~                                        |
|~                                        |
|                                        |
+---------------------------------------+
删除整行
要删除整行,请使用 "dd" 命令。下一行将向上移动以填补空白
+---------------------------------------+
|Found programming Unix a hurdle        |
|~                                        |
|~                                        |
|~                                        |
|                                        |
+---------------------------------------+
删除换行符
在 Vim 中,你可以将两行合并在一起,这意味着它们之间的换行符将被删除。使用 "J" 命令可以实现这一点。请看这两行
A young intelligent
turtle
将光标移动到第一行,然后按 "J"
A young intelligent turtle

02.5 撤销和重做

假设你删除了太多内容。你可以重新键入,但有一个更简单的方法。使用 "u" 命令可以撤销上一次编辑。让我们看看它的实际操作:在使用 "dd" 删除第一行后,"u" 会将其恢复。再试一次:将光标移动到第一行中的 A
A young intelligent turtle
现在键入 xxxxxxx 以删除 "A young"。结果如下所示
intelligent turtle
键入 "u" 以撤销上一次删除。该删除操作移除了 g,因此撤销操作会恢复该字符。
g intelligent turtle
下一个 "u" 命令将恢复上一次删除的字符
ng intelligent turtle
下一个 "u" 命令将恢复 u,依此类推
ung intelligent turtle
oung intelligent turtle
young intelligent turtle
young intelligent turtle
A young intelligent turtle

重做

如果你撤销了太多次,你可以按 CTRL-R(重做)以反转上一个命令。换句话说,它撤销了撤销操作。要查看它的实际操作,请按两次 CTRL-R。字符 A 及其后面的空格将消失
young intelligent turtle
撤销命令有一个特殊版本,即 "U"(撤销行)命令。撤销行命令会撤销对上次编辑行所做的所有更改。键入此命令两次会取消前一个 "U"。
A very intelligent turtle
xxxx 删除 very
A intelligent turtle
xxxxxx 删除 turtle
A intelligent
使用 "U" 恢复整行
A very intelligent turtle
使用 "u" 撤销 "U"
A intelligent
"U" 命令本身就是一个更改,"u" 命令会撤销它,而 CTRL-R 会重做它。这可能有点令人困惑。不用担心,使用 "u" 和 CTRL-R,你可以回到任何你曾经处于的状态。有关详细信息,请参阅第 32.2 节。

02.6 其他编辑命令

Vim 有大量命令可以更改文本。请参阅 Q_in 及以下内容。这里列出了一些常用的命令。

追加

"i" 命令在光标下的字符之前插入一个字符。这很有效,但如果你想在行末添加内容,该怎么办?为此,你需要在光标之后插入文本。这可以使用 "a"(追加)命令来实现。例如,要将以下行
and that's not saying much for the turtle.
更改为
and that's not saying much for the turtle!!!
将光标移动到行末的句号上。然后键入 "x" 以删除句号。现在光标位于行末的 turtle 的 e 上。现在键入
a!!!<Esc>
在 turtle 的 e 之后追加三个感叹号
and that's not saying much for the turtle!!!
打开新的一行
"o" 命令在光标下方创建一个新的空行,并将 Vim 置于插入模式。然后你可以键入新行的文本。假设光标位于以下两行中的第一行
A very intelligent turtle
Found programming Unix a hurdle
如果你现在使用 "o" 命令并键入新文本
oThat liked using Vim<Esc>
结果将是
A very intelligent turtle
That liked using Vim
Found programming Unix a hurdle
"O" 命令(大写)在光标上方打开一行。
使用计数
假设你想向上移动九行。你可以键入 "kkkkkkkkk",或者输入 "9k" 命令。实际上,你可以在许多命令之前加上一个数字。例如,本章前面,你在一行末尾添加了三个感叹号,方法是键入 "a!!!<Esc>"。另一种方法是使用 "3a!<Esc>" 命令。计数 3 会告诉后面的命令将效果乘以 3。类似地,要删除三个字符,请使用 "3x" 命令。计数始终在它所应用的命令之前。

02.7 退出

要退出,请使用 "ZZ" 命令。此命令将写入文件并退出。
注意: 与许多其他编辑器不同,Vim 不会自动创建备份文件。如果你键入 "ZZ",你的更改将被提交,无法撤回。你可以配置 Vim 编辑器以生成备份文件;请参阅 07.4

放弃更改

有时你可能会进行一系列更改,然后突然意识到你最好还是回到更改前的状态。别担心;Vim 有一个退出并丢弃更改的命令。它就是
:q!
别忘了按<Enter>键完成命令。
对于那些对细节感兴趣的人来说,这个命令的三个部分是冒号(:),它进入命令行模式;q 命令,它告诉编辑器退出;以及覆盖命令修饰符(!)。覆盖命令修饰符是必需的,因为 Vim 不愿意丢弃更改。如果你只是键入 ":q",Vim 会显示错误消息并拒绝退出。
E37: 自上次更改后未写入(使用 ! 覆盖)
通过指定覆盖,你实际上是在告诉 Vim,“我知道我正在做的事情看起来很愚蠢,但我真的想这样做”。
如果你想继续使用 Vim 编辑:":e!" 命令会重新加载文件的原始版本。

02.8 查找帮助

你一直想知道的一切都可以在 Vim 帮助文件中找到。不要害怕提问!
如果你知道你在找什么,通常使用帮助系统搜索比使用 Google 更容易。因为主题遵循一定的样式指南。
此外,帮助还有一个优点,它属于你的特定 Vim 版本。你不会看到对后来添加的命令的帮助。这些命令对你来说是无效的。
要获得一般帮助,请使用以下命令
:help
你也可以使用第一个功能键<F1>。如果你的键盘有<Help>键,它也可能有效。如果你没有提供主题,":help" 会显示一般帮助窗口。Vim 的创建者在帮助系统中做了一件非常聪明(或者很懒)的事情:他们将帮助窗口变成了一个普通的编辑窗口。你可以使用所有正常的 Vim 命令在帮助信息中移动。因此,h、j、k 和 l 分别表示向左、向下、向上和向右移动。要退出帮助窗口,请使用与退出编辑器相同的命令:"ZZ"。这只会关闭帮助窗口,而不会退出 Vim。
当你阅读帮助文本时,你会注意到一些用竖线括起来的文本(例如,help)。这表示超链接。如果你将光标定位在竖线之间的任何位置并按CTRL-](跳转到标记),帮助系统会将你带到指定的主题。(由于这里未讨论的原因,Vim 中超链接的术语是标记。所以CTRL-] 跳转到光标下方单词指定的标记的位置。)在跳转了几次之后,你可能想要返回。CTRL-T(弹出标记)会将你带回上一个位置。CTRL-O(跳转到更早的位置)在这里也很有效。在帮助屏幕的顶部,有一个help.txt 符号。帮助系统使用此符号之间的名称来定义标记(超链接目标)。有关使用标记的详细信息,请参阅29.1
要获得有关特定主题的帮助,请使用以下命令
:help {subject}
例如,要获得有关 "x" 命令的帮助,请输入以下内容
:help x
要了解如何删除文本,请使用以下命令
:help deleting
要获得所有 Vim 命令的完整索引,请使用以下命令
:help index
当你需要获得有关控制字符命令(例如,CTRL-A)的帮助时,你需要使用 "CTRL-" 前缀来拼写它。
:help CTRL-A
Vim 编辑器有许多不同的模式。默认情况下,帮助系统会显示普通模式命令。例如,以下命令会显示有关普通模式CTRL-H命令的帮助
:help CTRL-H
要识别其他模式,请使用模式前缀。如果你想要有关命令的插入模式版本的帮助,请使用 "i_"。对于CTRL-H,这将给出以下命令
:help i_CTRL-H
当你启动 Vim 编辑器时,你可以使用多个命令行参数。这些参数都以连字符 (-) 开头。例如,要查找 -t 参数的作用,请使用以下命令
:help -t
Vim 编辑器有一些选项,允许你配置和自定义编辑器。如果你需要有关选项的帮助,你需要用单引号将它括起来。例如,要查找'number' 选项的作用,请使用以下命令
:help 'number'
所有模式前缀的表格可以在下面找到:help-summary
特殊键用尖括号括起来。例如,要在插入模式下查找有关向上箭头键的帮助,请使用以下命令
:help i_<Up>
如果你看到你不理解的错误消息,例如
E37: 自上次更改后未写入(使用 ! 覆盖)
你可以使用开头的错误 ID 来查找有关它的帮助
:help E37
总结:help-summary 1)在键入主题后使用 Ctrl-D,让 Vim 显示所有可用的主题。或者按 Tab 键进行补全
:help some<Tab>
有关如何使用帮助的更多信息
:help helphelp
2)按照竖线中的链接查看相关帮助。你可以从详细帮助跳转到用户文档,用户文档从用户的角度描述了某些命令,并且更详细。例如,在
:help pattern.txt
你可以看到介绍中的用户指南主题03.9usr_27.txt
3)选项用单引号括起来。要跳转到 list 选项的帮助主题
:help 'list'
如果你只知道你在寻找某个选项,你也可以执行
:help options.txt
以打开描述所有选项处理的帮助页面,然后使用正则表达式搜索,例如 textwidth。某些选项有自己的命名空间,例如
:help cpo-<letter>
对于'cpoptions' 设置的相应标志,用特定标志替换<letter>,例如
:help cpo-;
以及用于'guioptions' 标志的
:help go-<letter>
4)普通模式命令没有前缀。要跳转到 "gt" 命令的帮助页面
:help gt
5)插入模式命令以 i_ 开头。有关删除单词的帮助
:help i_CTRL-W
6)可视模式命令以 v_ 开头。有关跳转到可视区域另一侧的帮助
:help v_o
7)命令行编辑和参数以 c_ 开头。有关使用命令参数 % 的帮助
:help c_%
8)Ex 命令始终以 ":" 开头,所以要跳转到 ":s" 命令帮助
:help :s
9)专门用于调试的命令以 ">" 开头。要跳转到 "cont" 调试命令的帮助
:help >cont
10)键组合。它们通常以单个字母开头,表示可以使用它们的模式。例如
:help i_CTRL-X
将你带到插入模式下CTRL-X命令的系列,这些命令可用于自动完成不同的内容。请注意,某些键始终以相同的方式写入,例如,Control 始终为 CTRL。对于普通模式命令,没有前缀,主题可以在 :h CTRL-<Letter> 中找到。例如
:help CTRL-W
相反
:help c_CTRL-R
将描述CTRL-R在命令行中输入命令时的作用,而
:help v_CTRL-A
讨论在可视模式下递增数字,而
:help g_CTRL-A
讨论 "g<C-A>" 命令(例如,你必须按 "g" 然后按<CTRL-A>)。这里 "g" 代表普通命令 "g",它总是期望第二个键,然后执行类似于以 "z" 开头的命令的操作。
11)正则表达式项始终以 / 开头。所以要获得有关 Vim 正则表达式中的 "\+" 量词的帮助
:help /\+
如果你需要了解有关正则表达式的一切,请从
:help pattern.txt
12)寄存器始终以 "quote" 开头。要查找有关特殊 ":" 寄存器的信息
:help quote:
13)Vim 脚本可以在
:help eval.txt
语言的某些方面可以在 :h expr-X 中找到,其中 "X" 是单个字母。例如
:help expr-!
将带你到描述 Vim 脚本中 "!"(非)运算符的主题。同样重要的是
:help function-list
查找所有可用函数的简要说明。Vim 脚本函数的帮助主题始终包含 "()",所以
:help append()
讨论 append Vim 脚本函数,而不是如何在当前缓冲区中追加文本。
14)映射在帮助页面 :h map.txt 中进行讨论。使用
:help mapmode-i
以了解有关:imap 命令的信息。还可以使用 :map-topic 查找特定于映射的某些子主题。例如
:help :map-local
用于缓冲区本地映射或
:help map-bar
用于了解映射中 "|" 的处理方式。
15)命令定义在 :h command-topic 中进行讨论,所以使用
:help command-bar
以了解有关自定义命令的 "!" 参数的信息。
16)窗口管理命令始终以CTRL-W开头,所以你可以在 :h CTRL-W_letter 中找到相应的帮助。例如
:help CTRL-W_p
用于移动先前访问的窗口。你也可以访问
:help windows.txt
并阅读其中的内容,如果你正在寻找窗口处理命令。
17)使用:helpgrep 在所有帮助页面(以及任何安装的插件)中搜索。有关如何使用它的信息,请参阅:helpgrep。要搜索主题
:helpgrep topic
这将带你到第一个匹配项。要跳转到下一个匹配项
:cnext
所有匹配项都可以在快速修复窗口中找到,可以使用以下命令打开该窗口
:copen
移动到你喜欢的匹配项,然后按 Enter 键跳转到该帮助。
18)用户手册。以一种比较友好的方式描述了初学者需要的帮助主题。从usr_toc.txt 开始,查找目录(正如你可能已经猜到的那样)
:help usr_toc.txt
浏览内容以查找有趣的主题。"双字符" 和 "输入特殊字符" 项目位于第 24 章,所以要跳转到该特定的帮助页面
:help usr_24.txt
此外,如果你想访问帮助中的某个特定章节,可以直接访问章节号,如下所示
:help 10.1
它会跳转到usr_10.txt 中的第 10.1 章,并讨论录制宏。
19)高亮组。始终以 hl-groupname 开头。例如
:help hl-WarningMsg
讨论 WarningMsg 高亮组。
20)语法高亮在 :syn-topic 中进行命名空间。例如
:help :syn-conceal
讨论 ":syn" 命令的 conceal 参数。
21)快速修复命令通常以 :c 开头,而位置列表命令通常以 :l 开头
22)自动命令事件可以通过其名称找到
:help BufWinLeave
要查看所有可能的事件
:help events
23)命令行开关始终以 "-" 开头。所以要获得 Vim 的 -f 命令开关的帮助,请使用
:help -f
24)可选功能始终以 "+" 开头。要查找有关 conceal 功能的信息,请使用
:help +conceal
25)包含的文件类型特定功能的文档通常以 ft-<filetype>-<functionality> 的形式提供。所以
:help ft-c-syntax
讨论 C 语法文件以及它提供的选项。有时,还会提供有关 omni 补全的附加部分
:help ft-php-omni
或文件类型插件
:help ft-tex-plugin
是可用的。
26)错误和警告代码可以在帮助中直接查找。所以
:help E297
将你直接带到交换错误消息的描述,而
:help W10
讨论警告 "更改只读文件"。但是,有时这些错误代码没有被描述,而是列在通常会导致此错误的 Vim 命令中。所以
:help E128
将你带到:function 命令
下一章:usr_03.txt 移动
版权:请参阅manual-copyright vim:tw=78:ts=8:noet:ft=help:norl
主目录
命令索引
快速参考