我对为什么下划线命令_跳到
光标下方第(COUNT-1)行的开头具有自己的键感到有些困惑。我什么时候使用它而不是+^

#1 楼

很好的问题!

作为正确的议案,您是对的,_并不是一个特别有用的键。 :h _

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


这里的关键词是“逐行”。因此,如果您的目标是仅移动光标,则^j+都可以完成工作,而指向_的意义不大。但是作为运算符,_非常强大。

许多双键快捷方式实际上只是_的快捷方式。例如,

dd -> d_
cc -> c_
yy -> y_
Y  -> y_


等。由于是逐行运动,因此基本上不管光标从哪里开始,它都会选择要操作的整行,而^只是从您的角色到第一个非空白。

考虑到逐行运动与逐块运动时,可以想像我在运动之前按vV会有所帮助。所以我想象d^等同于v^d,我想象d_等同于V_dV^d。当然,您也可以覆盖动作以强制其为直线或字符方向。所以dv_实际上与d^v^d完全相同,而dVw就像Vwd一样,恰恰像d_一样。

之所以特别是“ count-1th”行,是因为1dd(即真正地删除所有整行,真正的d1_删除完整的2行,真正的2dd删除完整的3行,等等。

评论


好的,但是我会真正使用它吗? dd比d_更容易,而3yj比4y_更容易。

–牙
19年4月25日在18:02

@toothrot如果要创建自己的运算符,并希望在接下来的n行中进行运算。

–詹姆斯
19年4月25日在18:07

@Toothrot我想我想澄清一下。在日常vim编辑中,不,它并不是特别有用。我也几乎从未使用过它。之所以有用,是因为它是许多有用命令的定义。 dd可能比d_更方便,但这是因为dd只是到d_的映射。而且在vimscript中也很有用。

–詹姆斯
19年4月25日在19:24

某些执行“动作”的动作可能没有其他快捷方式。即使光标不在该行的开头,“ gU_”之类的东西也会大写当前行的所有内容。

–bmb
19年4月25日在23:08

@bmb gUU呢?我认为找到一个使用 _的实际示例是值得的。

–霍奇克
19年5月15日在18:08