VIM:为什么点运算符的工作方式不同?

我想了解Vim的点(.)寄存器中存储的内容.

请考虑以下文本:

This is Line one
This is Line two
This is Line three

光标在第一行,如果我做A;< esc>我可以用j重复下一行的相同动作.

但是,如果我执行的操作就像删除第一行上的最后一个字符$x然后尝试用j重复下一行,它不会删除该行的最后一个字符,而只是删除该字符在光标下.

那么为什么dot命令能够记住第一个例子A中的位置;< esc>而不能为$x做同样的事情?

最佳答案
来自:帮助.:

.                       Repeat last change, with count replaced with [count].
                        Also repeat a yank command, when the 'y' flag is
                        included in 'cpoptions'.  Does not repeat a
                        command-line command.

使用A;,更改是插入;在当前行的末尾. A移动光标并切换到插入模式.

使用$x,$first移动光标,然后x命令删除一个字符.它们没有链接在一起,因此更改只是删除当前光标位置的字符.

(换句话说,如果命令在命令之后采用运动操作符,则运动只是更改的一部分,如d,或者如果运动隐含在命令中,则与A一样)

转载注明原文:VIM:为什么点运算符的工作方式不同? - 代码日志