vim删除后退技巧

veh*_*zzz 103 vim

  • 如何删除左边的单词?换句话说,当光标位于其末尾时删除该单词.
  • 如何删除行的开头?
  • 如何删除左边的第一个空格?

  • 任何其他涉及删除字词的技巧?

Luc*_*man 146

通常,d <motion>将在<motion>之后从当前位置删除到结束位置.这意味着:

  1. d <leftArrow>将删除当前和左侧字符
  2. d $将从当前位置删除到行尾
  3. d ^将从当前向后删除到第一个非空白字符
  4. d0将从当前向后删除到行首
  5. dw删除当前字的结尾(包括尾随空格)
  6. db删除当前单词开头的当前值

阅读本文以了解可以与'd'命令结合使用的所有内容.

  • 而不是输入`d <leftArrow>`do`dh`,因为`h`是向左移动的关键 (5认同)
  • 另一个方便的快捷方式,以防你发现 `db` 难以记住:`5. dw 或 d&lt;ctrl+rightarrow&gt;` 和 `6。db 或 d&lt;ctrl+leftarrow&gt;` (2认同)
  • 为什么会接受这个答案?d &lt;leftArrow&gt;(以及dw除外)不会删除OP想要的光标下的字符。 (2认同)
  • 这是一个非常糟糕的答案,正如其他评论中已经指出的那样,其中大多数不会删除光标下的字符。链接文档中也具体说明了这一点。 (2认同)

Abd*_*bdo 61

我曾多次参加这种情况.我想摆脱第10行中的所有空格,以便在逗号后用第9行连接.

在此输入图像描述

这基本上是VIM中的简单线连接.

kJ 诀窍(见下文)

Vim加入线

  • 我一直在到处找这个! (8认同)
  • 对此的解释是:`k` = 向上,`J` = 将下面的行连接到当前行,中间有一个空格。您也可以执行“kgJ”来加入,不带空格。`gJ` = 连接下面的行,中间不留空格。通过备忘单:https://vim.rtorr.com/ (5认同)
  • 哈哈,我想要这个,但我不知道如何在 Google 中描述它。很幸运我向下滚动 =)) (3认同)
  • 感谢您的提示.效果很好. (2认同)

Ran*_*ris 29

要回答第3点,diw并且daw非常出色.

  • <kbd> i </ kbd>是"内部"而<kbd> a </ kbd>是"a",如"a word"中所示.前者不包括封闭的空格,而后者将包括尾部空格(如果有的话),否则将包括前面的空格.非常有帮助,谢谢. (5认同)
  • 我觉得很遗憾,当你在最后一个字母时,没有两个字符命令可以向后删除一个单词,因为在标准编辑器中,例如notepad ++,gedit等,你可以很容易地使用CTRL + Backspace ......除此之外vim很棒. (4认同)
  • @ roggan87如果您使用的是单词的最后一个字母,`db`会删除最后一个字母之前的字母,但仍保留最后一个字母。 (3认同)
  • 您能解释一下这些命令中间的“ i”和“ a”在做什么吗?我知道前导d是“删除”,而后跟w是“单词”。 (2认同)
  • @CarlG 最好的解释是在 `:help text-objects` 中。开头的段落非常简洁,我认为描述得很好。 (2认同)

Mic*_*ker 21

在插入模式下:

  • ^ w ^
  • 不能回答我的想法;-)

除此以外:

  • DW
  • V0X
  • 不能回答我的想法;-)

  • 我不知道我可以在 Vim 的插入模式下删除单词。这很有帮助。 (2认同)

zou*_*oul 16

在命令模式下:

  1. bdw,回删字.
  2. d^(到第一个非空白),d0(到第一个字符)
  3. BdW (转到第一个空格删除到下一个空格)

(社区维基,随意破解.)


DrA*_*rAl 14

  1. db (如果光标在单词之后)或 bdw
  2. d0(或者d^如果要删除第一个非空白字符)
  3. dEdtSpace删除到第一个空格或d/\sEnter删除到下一个空格字符.

编辑

由于问题已被更改,因此3被删除到左边的第一个空格字符,我的答案应该更改为:

  1. dBdShiftTSpace删除回到第一个空格或d?\sEnter删除到前一个空格字符.

看到:

:help motion.txt
:help WORD
Run Code Online (Sandbox Code Playgroud)


Dan*_*man 5

我觉得没有一个答案是完整的:

通常,通常使用d<motion>和很少启动删除操作x

注意:N未指定时,其行为类似于N=1(删除单个字符)

离散字符:

<N>x -删除右边的N个字符

d<N><left-arrow> -删除左侧的N个字符

d<N><right-arrow> -删除右边的N个字符

字边界:

注意:第一个前/后一个字是光标下方的一个字

d<N>b -从第N个单词的开头删除到当前位置

d<N>e -从当前位置删除到第N个单词的末尾

d<N>w-与之相同,d<N>e包括结尾空格

diw -删除光标下的整个单词

daw-与之相同,diw包括结尾空格

线边界:

d0 -从行首删除到当前位置

d^ -从第一个非空白char删除到当前位置

d$ -从当前位置删除到行尾

  • 这实际上是最完整的答案,因为它明确涉及使用“diw”和“daw”删除光标下的整个单词。非常有用的命令! (2认同)
  • `dit` 是另一个有用的。删除 xml/html 标记的内部。 (2认同)