原文: Vim Editor Modes Explained
因为 Vim 专注于修改现有的代码,就像编写新的代码一样,所以它被分成几个模式,每个模式都有不同的目的。
正常模式
默认情况下,Vim 以“正常”模式启动。可以通过按 Esc
或 <C-[>
从其他模式进入正常模式。
在正常模式下,按键并不像人们所期望的那样工作。也就是说,它们不会在文档中插入文本;相反,某些按键可以:
移动光标
- h 向左移动一个字符
- j 向下移动一行
- k 向上移动一行
- l 向右移动一个字符
和许多 Vim 命令一样,行的移动可以用数字作前缀,以便一次移动几行:
- 4j 向下移动 4 行
- 6k 向上移动 6 行
基本的单词移动:
- w 移动到下一个单词的开头
- b 移动到上一个单词的开头
- e 移动到词的末尾
- W 移动到空白处后的下一个单词的开头
- B 移动到空白处之前的单词开头
- E 移动到空白处之前的单词末尾
行首/行尾移动:
- 0 移动到行首
- $ 移动到行尾
操作文本
进入另一个模式
正常模式是人们在使用 Vim 时应该花费大部分时间的地方。记住,这就是 Vim 的与众不同之处。
在正常模式下,有多种方法可以在一个打开的文件中移动。除了使用光标键移动外,你还可以使用 h
(左)、j
(下)、k
(上)和 l
(右)来移动。这对那些不喜欢在修改时离开主行的触摸打字的人特别有帮助。
你也可以在正常模式下对单个字符进行修改。例如,要替换一个字符,把光标移到它上面,然后按 r
,再按你想替换的那个字符。同样地,你可以通过将光标移到它上面并按下 x
来删除单个字符。
要进行撤销操作,在正常模式下按 u
。这将撤销你在正常模式下上一次的修改。如果你想重做(即撤销你的撤销),在正常模式下按 Ctrl+r
。
插入模式
这是第二种最常用的模式,对大多数人来说,这将是最熟悉的行为。一旦进入插入模式,打字就像普通文本编辑器一样插入字符。你可以通过使用正常模式中的插入命令来输入。
插入命令包括:
i
代表“插入”,这将立即把 Vim 切换到插入模式a
代表“附加”,它将光标移到当前字符之后并进入插入模式o
在当前行下插入一个新行,并在新行进入插入模式
这些命令也有大写的类型:
I
将光标移到行首,进入插入模式A
将光标移到行尾并进入插入模式O
在当前行的上方插入一个新行,并在新行上进入插入模式
在 Vim 中还有很多插入文本的方法,这里就不一一列举了,但这些是最简单的。另外,要注意在插入模式下停留的时间过长;Vim 的设计并不是要一直在插入模式下使用。
要离开插入模式,返回到正常模式,请按 Esc
或 <C-[>
。
可视化模式
可视化模式是用来对文本进行选择的,类似于用鼠标点击和拖动的行为方式。选择文本可以使命令只适用于所选内容,如复制、删除、替换等。
要选择文本:
- 按
v
键进入可视化模式,这也将标记一个起始选择点 - 将光标移到所需的结束选择点;Vim 将高亮选择的文本
可视化模式也有以下几种变体:
V
进入可视化行模式,这将按行选择文本<C-V>
进入可视区块模式,这将按区块选择文本;移动光标将对文本进行矩形选择
要离开可视化模式并返回到正常模式,请按 Esc
或 <C-[>
。
可视化模式实际上有多个子类型:可视化模式、块模式和行模式。
- 可视化:如上所述,按
v
键进入 - 块:选择任何矩形区域,按
<ctrl>+v
进入 - 行:总是选择整行,按
<shift>+v
进入
命令模式
命令模式有各种各样的命令,可以做一些正常模式不容易做到的事情。要进入命令模式,在正常模式下输入 “:”,然后输入你的命令,该命令应出现在窗口的底部。例如,要进行全局查找和替换,输入 :%s/foo/bar/g
以用 “bar” 替换所有 “foo”。
:
进入命令模式%
表示跨所有行s
表示替换/foo
是查找要替换的内容的正则/bar/
是用来替换事物的正则/g
表示全局,否则它每行只执行一次
Vim 还有一些其他的方法,你可以在帮助文档中读到,:h
或 :help
。
替换模式
替换模式允许你通过直接在上面打字来替换现有文本。在进入这个模式之前,先进入正常模式,把你的光标放在你想替换的第一个字符的上面。然后按 “R”(大写 R)进入替换模式。现在无论你输入什么,都会替换现有的文字。光标会自动移动到下一个字符,就像在插入模式下一样。唯一的区别是,你输入的每一个字符都会替换现有的字符。