Keywords: vim; insert mode; normal mode

记得有个专家说,VIM 大牛停留在  normal mode 的时间远超 insert mode。因为写代码时大脑中的活动才是最活跃的,而不是手指。

但我自己作为“菜鸟”却发现有一个反例,我在用 VIM 为 IDE 用 TeX 写文章或者论文时,会比写代码花更多的时间在 insert mode 里。因为我需要有大量的 inputs;而对写成的东西,我个人喜欢打印出来,用铅笔做修改。

在 insert mode 里写东西的时候,也常常不是一气呵成的,经常需要擦除重构(对单词或者 tag 里的重构不在此博客涉及)。从技术上说就是在 insert mode 里我需要快速删除至行首或者行末。

在刚开始接触 VIM 时,我的操作是 ESC 到 normal mode,然后

d0

来删除至行首;

d$

来删除至行末。

注:如果一行里有 TAB 缩进,而且只想删除至缩进处,则

d^

其实,这波操作完全没有什么问题,但是渐渐地发现要从 insert mode 切换到 normal mode 执行操作,然后再切回 insert mode,总觉得有些不 intuitive。虽然对于 normal mode 里“删除至行末”可以通过

 C 

直接完成删除且切回 insert mode。但是我还是觉得不舒服。

我自己喜欢的操作方式是(当然可能不是最优的),在 insert mode 里不离开,直接可以完成删除至行首/末。可以通过

Ctrl-u

来实现删除至行首。删除至行末则稍显不自然一些

Ctrl-o
C

因为需要有两步操作,而且 <C-o> 本质上也算是切换回了 normal mode(虽然是 pseudo 的)。有人会理论这跟切换回 normal mode 再按 C 的操作没有本质区别

ESC
C

但其实是有一些些差别的,通过按 ESC 进入 normal mode 后光标会回退一格,而不是当前位置。所以我更喜欢 <C-o> 进入 pseudo normal mode 然后再执行 C 的方式。

注: 以上 <C-o> 的表示方法意思是 按住 Ctrl 键然后再按 o (不是数字0) 。

 

 

 

One thought on “VIM 在不同模式中快速删除至行首/末

Leave a comment