##编辑模式下的快速改正
当我们使用vim编写文章的时候难免会打错字,除了按下退格键,在编辑模式下,我们可以使用其他方式来快速改正错误。
盲打的意A思并不仅仅是不看键盘打字,而是用感觉去打字(你觉得我走火入魔了么-_-!)。当盲打的时候,手指的感觉会比眼接收信息的速度快。我们不希望这时候节奏被打断,但是错误是在所难免的,如何快速改正错误变得非常重要。
在vim里面,可能你知道,在编辑模式下,除了使用退格键删除正在编辑的字符,还可以退回到普通模式,改正错误,再回到编辑模式。但这两种方法都感觉不太快速,因为退格键离键盘有点远,而后一种模式感觉更慢了,但是不用怕,vim为我们提供一些在编辑模式下使用的快捷键。
按键 | 效果 |
---|---|
<C-h> | 删除一个字符(退格键) |
<C-w> | 删除一个英文单词 |
<C-u> | 删除直到行的开始 |
你可能会问,为什么是\<C-h\>
,而不是其他快捷键。我觉得是因为在vim中我们使用hjkl来移动,而h是向左移动,用\<C-h\>
作为快捷键是非常直观的。
这些快捷键不仅可以在vim中使用,在bash中同样有效。
##返回普通模式
我们在普通模式的时间可能会多于在编辑模式的时间(编写文章的时候除外),如何快速在这两种模式之间切换变得很重要,我们除了使用Esc
来退回到普通模式,vim还为我们提供了快捷键。
按键 | 效果 |
---|---|
<Esc> | 转到普通模式 |
<C-[> | 转到普通模式 |
<C-o> | 转到临时普通模式 |
我们看到有一种新的模式是临时普通模式,这是什么?在这种模式下我们可以使用单一的普通模式下的命令然后立即返回到编辑模式。这个功能有什么实际用处吗?举一个例子,在普通模式下,我们可以使用zz
来使光标所在的行移动到屏幕的中间。当我们写文章的时候,我们想把正在编辑的底部的文章上移到屏幕中间,我们不需要打一大串\<CR\>
,我们只需要输入\<C-o\>zz
,不需要回到普通模式,不需要狂按Enter,我们的文章已经从底部移动到屏幕中央。
##不退出编辑模式粘贴暂存区内容
现在有以下文本,我们想把第一行的Learning Vim,复制到第二行的尾部。
:::java
Learning Vim,by Gavin Lin
Read Gavin Lin's
我们可以这样做:
:::java
yt,
jA<space>
<C-r>0
.<Esc>
我们来看一下这些命令都干了些什么,首先yt,
是复制当前光标直到遇到,
,jA<space>
是移动到下一行,编辑行尾,然后输入空格。\<C-r\>0
是在编辑模式下粘贴暂存区0的内容。再输入句号退出。
##编辑的时候计算
当我们编j辑的时候需要做些简单的运算,不需要切换到计算机,vim就可以帮助你。
只要在编辑模式输入<C-r>=
,就可以使用vim的计算器并返回计算结果。
##输入不常用的字符
如果我们想输入大写字母A,通常只是Shift + a
,但如果你知道它的字符编码065,你就可以在编辑模式输入<C-v>065
,我们怎么知道字符的编码?你可以在那个字符上输入ga
命令。
如果想输入¿呢?可以使用<C-v>u00bf
,我们看到这个字符是大于三位的。而且是十六进制。:h digraph-table
。
但是毕竟上述的输入方式有些反人类了,我们还要去查找某些字符的编码。这里我们介绍一些简单的方式。例如我们想输入¿,我们只需键入<C-k>?I
,如此类推,如果想输入¡,只要输入<C-k>!I
,这些够方便了吧。如果我们想输入½之类的,只要输入<C-k>12
,又是一个方便的操作。详情可查:h digraphs-default
。
##用替换模式来覆盖已有字符
只要我们在普通模式按下R
,就会进入替换模式,输入字符来替换现有字符,行的长度不变,只想替换一个字符的话可以使用r
。
本章就到这里了。