Vim插入模式

Tip13 Make Corrections Instantly from Insert Mode

插入模式下进行更正

在插入模式下更正错误首先想到退格键,它删除光标前的字符。另外还有使用以下组合键:

按键操作 用途
< C – h > 删除前一个字符(同退格键)
< C - w > 删除前一个单词
< C - u > 删至行首

​ 注:这些快捷键不是插入模式独有的,甚至不是vim独有的,在vim命令行模式,以及bash shell , cmd, powershell 中也可以使用他们。

Tip14 Get Back to Normal Mode

返回普通模式

插入模式只专注于一件事,就是输入文字普通模式才是我们大部分时间所用的模式

切换会普通模式的经典方式是 <Esc> 键,我们也可以用< C – [ >替代,效果完全一样。

按键操作 用途
< Esc > 切换回普通模式
< C – [ > 切换回普通模式
< C - o > 切换至插入 - 普通模式

插入 - 普通模式:普通模式的一个特例,它能让我们执行一次普通模式命令,执行完毕之后,马上有回到插入模式。

例:使用zz命令使光标重新位于屏幕中间。键入< C - o > zz ,在普通模式下触发命令,重绘屏幕,此操作完成后会直接回到插入模式,因此可以不中断打字。

Tip15 Paste from a Register Without Leaving Insert Mode

不离开插入模式,粘贴寄存器中的文本

Keystrokes Buffer Contents
yt, Practical Vim, by Drew Neil Read Drew Neil’s
jA␣ Practical Vim, by Drew Neil Read Drew Neil’s
< C – r >0 Practical Vim, by Drew Neil Read Drew Neil’s Practical Vim
. Practical Vim, by Drew Neil Read Drew Neil’s Practical Vim.

yt, - 光标到第一个 “,” 之间的文本放入寄存器

jA␣ - 光标移动到下一行, 然后定位到行末并切换为插入模式, 再输入一个空格

0 - 插入寄存器 0 里的内容, 即刚刚放到寄存器的内容 (:h i_CTRL-R)

. - 句号结尾后退出插入模式

Tip 16 Do Back-of-the-Envelope Calculations in Place

数学计算

Keystrokes Buffer Contents
A 6 chairs, each costing $35, totals $
=6*35 6 chairs, each costing $35, totals $210.

Tip 17 Insert Unusual Characters by Character Code

用字符编码插入非常用字符。插入一些无法通过键盘输入的字符(目前需求不大)

Tip 18 Insert Unusual Characters by Digraph

用二合字母插入非常用字符。插入一些无法通过键盘输入的字符(目前需求不大)

Tip 19 Overwrite Existing Text with Replace Mode

覆盖模式

普通模式下按 R 即可开启覆盖模式; r / gr 仅覆盖一个字符

用虚拟替换模式替换制表符:

一些字符使替换模式变得复杂化。以制表符为例,在文件中它以单个字符表示,但在屏幕上它却会占据若干列的宽度,此宽度由 ‘tabstop’ 设置决定。如果把光标移到制表符上,然后进入替换模式,那么我们所输入的下一个字符将会替换制表符。假设 ‘tabstop’ 选项设置为 8(这是缺省值),那么该操作的结果就是把 8 个字符替换成了一个字符,这将大幅缩短当前行的长度。

Vim 还有另外一种替换模式,称为虚拟替换模式(Virtual Replace mode)。该模式可由 gR 命令触发,它会把制表符当成一组空格进行处理。假设我们把光标移到一个占屏幕 8 列宽的制表符上,然后切换到虚拟替换模式,在输入前 7 个字符时,每个字符都会被插入到制表符之前;最后,当输入了第 8 个字符时,该字符将会替换制表符。

在虚拟替换模式中,我们是按屏幕上实际显示的宽度来替换字符的,而不是按文件中所保存的字符进行替换。这会减少意外情况的发生,因此建议在可能的情况下尽量使用虚拟替换模式。