5.4. 技巧8——将撤销操作分组

未匹配的标注

5.4 技巧8——将撤销操作分组

在其它的文本编辑器中键入几个单词后,调用撤销命令可能会撤销最近一次键入的单词或字符。然而在 Vim 中,可以控制撤销命令的粒度。

u 键触发了撤销命令,它恢复最近的改变。一个改变可以是修改文档中文本的任何东西,包括了从正常、视觉以及命令行模式触发的命令。但是一个改变也可以包括任何在插入模式下输入或删除的文本。所以我们也可以说 i{插入一些文本}<Esc> 构成了一个改变。

在非模态的文本编辑器中,输入一些单词后触发撤销命令,可能会产生以下两种后果。它可以撤销最近一个被键入的字符。或者,更有用的,它可以将一组字符组合在一起,这样每一个撤销操作都会移除一个单词而不是一个字符。

在 Vim 中可以控制撤销命令的粒度。从进入插入模式的那一刻起,直到返回正常模式,输入或删除的任何东西都作为一次单独的变化,所以仅仅是调节 <Esc> 键的使用就能让撤销命令对单词、句子和或段落进行操作。

那么应该多久离开插入模式?这是一个偏好问题。但是我喜欢将每一个可撤销的块对应于一个想法。当我在写这篇文章(当然是在 Vim 中)时,我通常在句子的末尾暂停下来,考虑我接下来要写什么。不管这个过程有多简短,每一次暂停都形成了一个自然的停止点,给了我一个离开插入模式的提示。当我准备好继续写作时,按 A,从离开的地方继续。

如果发现走错了方向,我将切换回正常模式,然后按 u。每一次撤销时,我的文本都分解为连贯的块,它们对应于我写作原文时的思维过程。这意味着可以轻易地测试一个两个句子,然后使用几次键击就将它们丢弃。

如果在插入模式,光标在行的末尾,开始一个新行的最快方法是按 <CR>。然而我有时候喜欢按 <Esc>o,只是因为我预计可能需要这个撤销命令的额外粒度。如果这听起来很难,不要担心,随着你对 Vim 越来越熟练,切换模式会感到越来越容易。

一般,如果你已经停留得足够长来问这个问题——我需要离开插入模式吗?那么就离开吧。

在插入模式中移动将重置更改

当我说撤销命令将撤销进入插入模式然后回来的这个过程当中所有键入或删除的字符时,我掩盖了一个小的细节,当在插入模式如果使用 <Up><Down><Left><Right> 光标键进行移动时,一个新的撤销块就被创建。就好像我们已经切换回正常模式来使用 hjkl 命令来移动,除了我们不需要离开插入模式。这对点命令的操作也有影响。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~