Skip to content

Vim - 编辑

Vim 的强大之处体现在其编辑能力上,这主要通过 Normal 模式下的命令来实现,这些命令可以切换到 Insert 模式。本章涵盖了用于插入、更改和操作文本的基本命令。

  • 在光标前插入文本
  • 在光标后追加文本
  • 打开新行
  • 替换字符或行
  • 更改文本
  • 覆盖字符
  • 合并行

大多数编辑命令都是从 Normal 模式启动的。请记住按下 Esc 键从 Insert 模式返回 Normal 模式。

要在当前光标位置插入文本:

  • 在 Normal 模式下按 i(小写)。
  • Vim 切换到 Insert 模式,您可以开始输入。
  • 文本将出现在光标所在的字符之前。
i " Enter Insert mode before the cursor

要快速移动到当前行首并开始插入文本:

  • 在 Normal 模式下按 I(大写)。
  • 光标移动到行的第一个非空白字符处(如果该行为空或仅包含空白字符,则取决于配置,光标会移动到第 0 列),并且 Vim 进入 Insert 模式。
I " Enter Insert mode at the beginning of the line

要在当前光标位置之后立即追加文本:

  • 在 Normal 模式下按 a(小写)。
  • 光标向右移动一个位置,Vim 切换到 Insert 模式。
a " Enter Insert mode after the cursor

要快速移动到当前行尾并开始追加文本:

  • 在 Normal 模式下按 A(大写)。
  • 光标移动到当前行尾,Vim 进入 Insert 模式。
A " Enter Insert mode at the end of the line

要在当前行下方插入一个新空白行并开始在其上输入:

  • 在 Normal 模式下按 o(小写)。
  • 当前行下方会创建一个新行,光标移动到新行,Vim 进入 Insert 模式。
o " Open a new line below and enter Insert mode

要在当前行上方插入一个新空白行并开始在其上输入:

  • 在 Normal 模式下按 O(大写)。
  • 当前行上方会创建一个新行,光标移动到新行,Vim 进入 Insert 模式。
O " Open a new line above and enter Insert mode

替换命令会删除文本然后进入 Insert 模式。

  • 要替换光标下的单个字符:在 Normal 模式下按 s(小写)。光标下的字符被删除,Vim 进入 Insert 模式。
  • 要替换整个当前行:在 Normal 模式下按 S(大写)或使用 cc。整行被删除,Vim 在一个空白行上进入 Insert 模式。
s " Delete character under cursor and start insert
S " Delete current line and start insert (same as cc)

修改(Change)命令很强大,它们结合了删除和进入 Insert 模式。它们通常需要一个动作(motion)。

  • cc (或 S): 删除当前行并进入 Insert 模式。
  • C (或 c$): 删除从光标位置到行尾的文本并进入 Insert 模式。
  • cw: 修改单词。删除从光标到当前单词结尾的文本并进入 Insert 模式。
  • c<motion>: 修改由 <motion> 覆盖的文本。例如,caw 修改 ‘a word’,ciw 修改 ‘inner word’,c2j 修改当前行及其下两行。

示例:如果光标在 “brown fox” 中的 ‘b’ 上: cw 修改 “brown” 并允许您输入替换文本。 C 修改 “brown fox” 并允许您为行的其余部分输入替换文本。

覆盖(Replace)命令会覆盖现有文本,而不会移动后续字符。

  • 要覆盖光标下的单个字符:在 Normal 模式下按 r(小写),然后输入您要替换的字符。Vim 保持在 Normal 模式。
  • 要进入 Replace 模式:在 Normal 模式下按 R(大写)。Vim 进入 Replace 模式(底部会显示)。您输入的字符将覆盖现有字符。按 Esc 返回 Normal 模式。
r<char> " Replace single character under cursor with <char>
R " Enter Replace mode

在 Replace 模式下,在 “abc” 上输入 ‘X’ 将得到 “Xbc”。状态行通常会显示 -- REPLACE --。

要将当前行与下一行合并:

  • 在 Normal 模式下按 J(大写)。
  • 这将当前行与其下方行合并,移除下方行的缩进,并且通常会插入一个空格(如果第一行以句号、问号或感叹号结尾,则插入两个空格)。
  • 要合并行而不插入任何空格,请使用 gJ。
J " Join current line with the next, adding a space
gJ " Join current line with the next, without adding a space