Vim 中的虚拟替换模式有什么意义?

Sri*_*tty 9 vim vi

帮助说明 Vim 中的虚拟替换模式命令grGR替换屏幕资产中的字符而不是文件中的字符。

:help Virtual-Replace-mode
Run Code Online (Sandbox Code Playgroud)

我将其理解为类似于更改显示器上的字符而不是缓冲区本身的字符。那正确吗?似乎不正确。

我可以使用说明,也可以使用与此功能相关的场景或示例。

kri*_*ssi 10

在虚拟替换模式下,缓冲区更难固定在其原点位置。

1. Hello World
         ^ Cursor
2. I like cheese
3. And beer
Run Code Online (Sandbox Code Playgroud)

进入正常替换模式并点击Internet<CR>And others新缓冲区时将如下所示:

1. Hello Internet
2. And others
3. I like cheese
4. And beer
Run Code Online (Sandbox Code Playgroud)

在 Virtual-Replace 中执行相同操作时,结果将是

1. Hello Internet
2. And othersese
3. And beer
Run Code Online (Sandbox Code Playgroud)

另一个例子(tabstop=2;sts=0):

1. 012345678901234567890
2. Hello beautiful World
         ^ Cursor
Run Code Online (Sandbox Code Playgroud)

按键: <Tab><Tab>

替换模式结果:

1. 012345678901234567890
2. Hello     autiful World
Run Code Online (Sandbox Code Playgroud)

虚拟替换模式结果:

1. 012345678901234567890
2. Hello     tiful World
Run Code Online (Sandbox Code Playgroud)

因为在替换模式下,替换是Tab逐个字符完成的,无论显示多少个字符,哪里是一个字符。在虚拟替换模式中,Tab( :h 'ts', :h 'sts') 的可见长度用于替换字符。