作为标题。
由于_
是行中第一个非空白字符的移动,c + movement
通常意味着更改(也就是删除+进入插入模式)缓冲区从光标到移动,为什么这不起作用?它似乎删除整行,而不是从光标到行的开头(又名cc
或C
)。有替代方案吗?
答案 0 :(得分:5)
这是vim中的一个已知问题。见https://github.com/vim/vim/issues/2189#issuecomment-334441965:
_
是一个线性运动(我猜是因为VI的兼容性)。与行方向移动相结合的所有命令(如d
或c
) 影响整条线。你可以做运动(结合一个 命令)以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.