选择包含短划线的整个单词

axs*_*uul 4 vim

假设我有字符串

hello how-ar[]e-you doing
Run Code Online (Sandbox Code Playgroud)

[]我的光标在哪里 我将如何有效地选择how-are-you这样的

hello [how-are-you] doing
Run Code Online (Sandbox Code Playgroud)

到目前为止,我能想到的是 Bvt<space>

rom*_*inl 10

Vim有"word"和"WORD"的概念,其中"word"是'iskeyword'选项中的字符序列,"WORD"是非空白字符序列.

从而…

  • w("字")将跳转到运动-are,因为-不是的一部分'iskeyword',
  • W议案("WORD")将跳转到doing,
  • iw文本的对象("内字")将包括are,
  • iW文本的对象("内WORD")将包括how-are-you,
  • 等等其他动作和文本对象.

你要找的是iW文本对象:

viW
Run Code Online (Sandbox Code Playgroud)

:help navigation 会打击你的想法.


sud*_*id4 7

除了其他答案(使用Word而不是单词),如果您希望这是默认行为(这-将被视为单词字符 - 而不是单词分隔符),您可以将其添加到您的vimrc

set iskeyword+="-"
Run Code Online (Sandbox Code Playgroud)

之后viw会给你预期的结果.输入:h iskeyword有关它的更多信息

  • 如果不删除引号,这对我不起作用:`set iskeyword+=-`。此外,您可以使用 https://github.com/machakann/vim-textobj-delimited 来维护针对单个单词的能力。 (3认同)