《Vim实用技巧(第2版)》——2.2 把撤销单元切成块

简介: 在不区分模式的文本编辑器中,输入一些单词后使用撤销命令,有两种可能。一种是它可能会撤销最后输入的字符;另一种做得更好点,它可能会把字符分成块,使每次撤销操作删除一个单词而不是一个字符。

本节书摘来自异步社区《Vim实用技巧(第2版)》一书中的第2章,第2.2节,作者:【英】Drew Neil(尼尔)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.2 把撤销单元切成块

在其他编辑器中,输入一些词后使用撤销命令,可能会撤销最后输入的词或字符,然而在Vim中,我们自己可以控制撤销的粒度。
u 键会触发撤销命令,它会撤销最新的修改。一次修改可以是改变文档内文本的任意操作,其中包括在普通模式、可视模式以及命令行模式中所触发的命令,而且一次修改也包括了在插入模式中输入(或删除)的文本,因此我们也可以说,i{insert some text}<Esc> 是一次修改。

在不区分模式的文本编辑器中,输入一些单词后使用撤销命令,有两种可能。一种是它可能会撤销最后输入的字符;另一种做得更好点,它可能会把字符分成块,使每次撤销操作删除一个单词而不是一个字符。

在Vim中,我们自己可以控制撤销命令的粒度。从进入插入模式开始,直到返回普通模式为止,在此期间输入或删除的任何内容都被当成一次修改。因此,只要控制好对 <Esc> 键的使用,就可使撤销命令作用于单词、句子或段落。

那么,应该多久离开一次插入模式呢?这是个人喜好的问题,不过我喜欢让每个“可撤销块”对应一次思考过程。在写这段文字时(当然是在Vim中写的),我经常在每句话的结尾停顿一下,想一想接下来该写什么。不管停顿的时间有多短,每次停顿都是一个自然的中断点,提示我该退出插入模式了。当我准备好继续写时,按 A 命令就可以回到原来的地方继续写作。

如果我认为已经走错了方向,就会切换到普通模式,然后按 u 撤销。每次做撤销时,文字都按我最初书写时的思路,被切分成条理清晰的块,也就是说我可以很容易地试着写一两句话,如果感到不合适的话,随后按一两下键就可以将其舍弃。

当处于插入模式时,如果光标位于行尾的话,另起一行最快的方式是按 <CR>。不过有时我更喜欢按 <Esc>o,这是因为我有预感,也许在撤销时我想拥有更细的粒度。如果听起来这不太好理解,不必担心,当你对Vim越来越熟悉时,就会感到切换模式越来越轻松。

一般来讲,如果你停顿的时间长到足以问“我应该退出插入模式吗?”这个问题,就退出吧。

在插入模式中移动光标会重置修改状态

当我提到撤销命令会回退从进入插入模式到退出此模式期间输入(或删除)的全部字符时,我略过了一个小细节。如果在插入模式中使用了 <Up><Down><Left><Right> 这些光标键,将会产生一个新的撤销块。你可以把这想象为先切换回普通模式,然后用 h 、j 、k 或 l 命令对光标进行了移动,唯一区别是我们并没有退出插入模式。这也会对 . 命令的操作产生影响。

相关文章
|
6月前
|
Linux 开发工具
Linux Vim撤销和恢复撤销快捷键
使用 Vim 编辑文件内容时,经常会有如下 2 种需求: 对文件内容做了修改之后,却发现整个修改过程是错误或者没有必要的,想将文件恢复到修改之前的样子。 将文件内容恢复之后,经过仔细考虑,又感觉还是刚才修改过的内容更好,想撤销之前做的恢复操作。 基于这 2 种需求,Vim 编辑器提供了撤销和恢复撤销的命令。 注意,以上这 3 种命令都必须在 Vim 编辑器处于命令模式时才能使用。 下面通过一个例子来演示以上 3 个命令的具体用法。首先,我们新建一个 demo.txt 文件并打开,键入一行内容,例如: http://c.biancheng.net 然后按“Esc”键,使 Vim 由
68 0
|
机器学习/深度学习 开发工具
Vim高手,从来不用鼠标2——替换、撤销、缩进、查找
Vim高手,从来不用鼠标2——替换、撤销、缩进、查找
Vim高手,从来不用鼠标2——替换、撤销、缩进、查找
|
Linux 开发工具
5.6 Linux Vim撤销和恢复撤销快捷键
使用 Vim 编辑文件内容时,经常会有如下 2 种需求:
626 0
5.6 Linux Vim撤销和恢复撤销快捷键
|
开发工具 搜索推荐 网络安全
《Vim实用技巧(第2版)》——导读
Vim是高度可配置的,然而定制是一件很个性化的事情,因此我试图避免建议什么应该放进你的vimrc里,什么不应该。相反,本书关注的是Vim编辑器的核心功能。不管你是通过SSH登录远端服务器工作,还是在用本地安装了插件而增添了额外功能的GVim,这些功能都永远在那儿。
1811 0
|
开发工具
《Vim实用技巧(第2版)》——2.6 双剑合璧,天下无敌
如果想用 = 命令自动缩进整个文件,可以执行 gg=G (就是说,先用 gg 跳到文件开头,然后用 =G 自动缩进从光标位置到文件结尾的所有内容)。但是如果安装了textobj-entire插件的话,简单地执行 =ae 就可以了。运行这条命令时光标在哪儿并不重要,因为它总是作用于整个文件。
2451 0
|
开发工具
《Vim实用技巧(第2版)》——2.5 能够重复,就别用次数
在处理某些特定工作时,使用次数可以使按键次数变得最少,不过并不是非得这样不可。我们需要认真考虑次数与重复各自的优缺点。根据我们的讨论,d2w 和 2dw 是相同的,在执行完两者中的任一个后,可以按 u 键撤销,这样两个被删除的单词又会回来。
2651 0
|
开发工具 前端开发
《Vim实用技巧(第2版)》——2.4 用次数做简单的算术运算
本节书摘来自异步社区《Vim实用技巧(第2版)》一书中的第2章,第2.4节,作者:【英】Drew Neil(尼尔)著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1400 0
|
开发工具
《Vim实用技巧(第2版)》——2.3 构造可重复的修改
要想充分利用 . 命令,事先常常需要进行一番周详的考虑。如果你发现自己要在几个地方做同样的小修改,就可以尝试构造你的修改,让它们能够被 . 命令重复执行。要识别出这类机会需要进行一定的实践,不过一旦养成了使修改可重复的习惯,你就会从 Vim 这里得到“奖赏”。
1992 0