在vim中,为什么c_表现得好像cc?

时间:2017-12-27 04:56:11

标签: vim

作为标题。

由于_是行中第一个非空白字符的移动,c + movement通常意味着更改(也就是删除+进入插入模式)缓冲区从光标到移动,为什么这不起作用?它似乎删除整行,而不是从光标到行的开头(又名ccC)。有替代方案吗?

3 个答案:

答案 0 :(得分:5)

这是vim中的一个已知问题。见https://github.com/vim/vim/issues/2189#issuecomment-334441965

  

_是一个线性运动(我猜是因为VI的兼容性)。与行方向移动相结合的所有命令(如dc)   影响整条线。你可以做运动(结合一个   命令)以v为前缀加字符。因此cv_dv_应该   做你想做的事。

答案 1 :(得分:2)

因为_被定义为上/下动作。来自:help up-down-motions

_  <underscore>     [count] - 1 lines downward, on the first non-blank
                    character |linewise|.

它只定义了上/下运动完成后光标结束的位置。因此,c_在线上运行,就像cj一样。

答案 2 :(得分:0)

Amadan's answer给出了c_无法正常工作的原因。


回答问题的第二部分

  

是否有其他选择?

是的,有。使用c^

签出:help left-right-motions,您会发现:

^                   To the first non-blank character of the line.
                    exclusive motion.