Vim 光标设置

Vim 光标设置

假设我在 Vim 中有此行​​并且我单击$以到达 EOL。

Hello Worl*d

星号标记光标的位置,即在此处输入图片描述

假设现在我想向后删除直到空格,所以我使用dT<Space>。这给我留下了:

Hello *d

问题是光标实际上位于l和之间d

在这种情况下,另一种选择是diw(或者diW如果单词我喜欢使用最先出现在我脑海中的动作(例如,包含连字符等),但我喜欢使用首先出现在我脑海中的动作,有时直到出现一个角色时才做一个动作会更明显。

这里有解决方法吗?一个想法是将光标移动到光标块的右侧,而不是左侧。我还没有找到任何相关信息。

答案1

我理解问题在于当 EOL 字符紧跟该单词时删除该行中的最后一个单词,而当您首选的快捷方式保留最后一个字符而不删除它时。

问题可能是因为 Vim 区分了包容性动作和排他性动作。使用 可v切换动作的“包容性”或“排他性”。

因此您可以使用这个组合: d++ v+TSpace

请参阅:help inclusive以了解解释。

如果太长,你可以录制 为了它。

您还可以使用以下快捷方式:

daw : delete the word under the cursor (includes spaces before the next word)
caw : same and puts you in insert mode 
diw : delete entire word without touching whitespace around it
daW : delete all characters between two whitespaces

答案2

  • 使用:set virtualedit=onemore,您可以将光标移动到最后一个字符的右侧,并且您的命令将会起作用:$ldT<Space>
  • 正如您提到的,在这种情况下,动作是自然的iw
  • 除了T<Space>,您还可以b在这里使用 。
  • 我可能会bD在这里用。
  • 如果dT<Space>您首先想到的是 ,您可以使用 来更正遗漏的字符x。只要您不使用已删除的内容或撤消,这都没有关系。

相关内容