在vim shift + w(W)不起作用。它像w一样前进。我如何解决它?

时间:2013-05-25 13:57:41

标签: vim macvim

我使用的是vim 7.3,在OS X 10.8.3上通过自制软件安装。出于某种原因,WE在正常模式下均无法正常工作。它不是一次向后移动一个单词,而是向前移动。 W的行为与w相同。 E的行为与e相同。

我在正常模式下尝试了oO命令,它按预期工作,所以它不像我的shift键被破坏了。

这让我疯狂,因为它是我无法开展工作的核心功能。我试过擦除我的vimrc和vim目录并更改shell。

对于任何能够为我解决问题或者就如何诊断问题提供良好建议的人,我都会答应。

4 个答案:

答案 0 :(得分:14)

WE不是we的后向版本(分别为bge)。< / p>

小写版本认为单词停留在非单词字符处,例如标点符号或空格。大写版本只考虑空格(因此移动过去带有标点符号的单词)。 vim手册清楚地解释了所有组合:

           ge      b          w                             e
           <-     <-         --->                          --->
    This is-a line, with special/separated/words (and some more).
       <----- <-----         -------------------->         ----->
         gE      B                   W                       E

您可以在“移动周围的入门”(:help usr_03.txt)中找到此概述,并在:help word-motions处找到更多详细信息。

答案 1 :(得分:10)

shift + W 通常会向后工作。它像w一样向前移动,只是对“单词”的定义不同(例如W将跳过“hello-world”,w将以连字符结束)。

向后移动是b。

在考虑某些内容被破坏之前,请使用vim帮助(本例中为:h W)。

答案 2 :(得分:0)

您描述的功能不是标准的Vim,但如果您已经习惯了,请尝试以下映射:

nnoremap W B
nnoremap E gE

答案 3 :(得分:0)

w意味着前进到“单词”的开头。在Vim中,“单词”表示:

  • 字母数字和下划线(正则表达式:\w+),或
  • 其他非空白字符的序列(正则表达式:[^\s\w]+

W意味着前进到“WORD”的开头。在Vim中,“WORD”表示:

  • 一系列非空白字符(正则表达式:\S+

这个例子:

:help usr_03.txt
  • 包含7个字词:“:”,“help”,“usr”,“_”,“03”,“{{ 1}}“,”.
  • 包含2个词:“txt”,“:help

usr_03.txteEb的工作方式类似。


与问题没有直接关系,但如果您想查找密钥(或密钥组合)的功能,请使用

B

注意:套管很重要。

示例:

  • :h {key}
  • :h W
  • :h w
  • :h yy或简写:h CTRL-W_T