在这种情况下,dot命令如何工作?

时间:2016-03-17 20:26:21

标签: vim

我试图通过Drew Neil的“实用Vim”一书中的一个例子来弄清楚dot命令是如何工作的。

采取以下文字:

var foo = "method("+argument1+","+"argument2"+")";

如果光标在第一个+字符上,我们按顺序执行:

s[space]+[space][Esc]

我们在第一个+周围添加填充。即结果是:

var foo = "method(" + argument1+","+"argument2"+")";

如果我们移动到下一个+并使用dot命令,我们最终得到:

var foo = "method(" + argument1 + ","+"argument2"+")";

据我所知,Vim会在插入模式下保存我们输入的文本,直到我们退出到普通模式,然后我们可以使用dot命令应用该更改。

但为什么Vim会保存删除使用s命令完成的+?是因为s命令首先将Vim置于插入模式,然后删除字符?

编辑: 我检查了Vim文档中的s命令,并说:

  

删除字符并开始插入。

所以听起来它删除了字符,然后进入插入模式,这将反驳我之前的理论。发生了什么事?!

1 个答案:

答案 0 :(得分:2)

Dot命令重复最后一次更改仅限于INSERT模式

中的更改

要了解更多信息,

:help change.txt

在这种情况下,正如@ Two-Bit Alchemist指出的那样,从 s 按到返回NORMAL模式时的所有事情都是更改

dot命令的一个好处是它可以扩展为重复多次更改 蒂姆波普的vim-repeat是利用这种可能性的一个很好的例子。

请参阅以下链接了解更多
what can the dot command repeat, exactly?
can someone explain to me why the dot command is so useful in vim