原文: 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)进入替换模式。现在无论你输入什么,都会替换现有的文字。光标会自动移动到下一个字符,就像在插入模式下一样。唯一的区别是,你输入的每一个字符都会替换现有的字符。