我试图通过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命令,并说:
删除字符并开始插入。
所以听起来它删除了字符,然后进入插入模式,这将反驳我之前的理论。发生了什么事?!
答案 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