如何用类似2daw/d2aw的指令删当前与前词及全部前置词?
Vim 删除操作技巧:当前+前一个单词、删除之前所有单词
针对你的两个问题,我整理了Vim里对应的高效操作:
1. 删除当前单词及前一个单词
要一次性删除当前单词和它前面的那个单词,分两种灵活场景:
- 如果你的光标刚好在当前单词的开头,直接输入指令:
d2b。这个操作会精准删除当前单词和前一个单词(包括它们之间的空格)。 - 如果光标在当前单词的任意位置(比如中间或末尾),可以用组合指令:
ed2b。拆解一下逻辑:e:快速跳到当前单词的末尾,确保选中范围覆盖整个当前单词d2b:从单词末尾向前删除两个单词的范围,刚好包含当前单词和前一个单词
另外还有个更贴合你使用习惯的方式:先按b跳到前一个单词的开头,再用你熟悉的d2aw——这样就会删除前一个单词和当前单词,组合起来就是bd2aw,和你用d2aw删当前+下一个单词的逻辑完全对应。
2. 删除之前的所有单词
根据不同需求,这里有两个常用指令:
- 删除当前行中光标位置之前的所有内容(包括空格和单词):直接输入
d0。这个操作会清空从行首到当前光标前的全部内容。 - 删除当前行中光标位置之前的所有非空白内容(跳过行首缩进空格):输入
d^。这个操作适合处理带缩进的代码行,只会删除行首第一个非空白字符到光标前的单词内容。
小提示
这些指令都在普通模式下直接生效,不需要切换到插入模式。如果担心操作出错,可以先按v进入可视化模式,输入对应的移动指令(比如2b),确认选中范围符合预期后再按d删除,更稳妥。
内容的提问来源于stack exchange,提问作者skube
相关产品推荐
相关产品推荐

