Vim:单词与单词


82

我正在学习Vim的,不能换我的头周围的差异之间wordWORD

我从Vim手册中获得了以下内容。

一个单词由字母,数字和下划线组成,或者由其他非空白字符组成,并用空格(空格,制表符,)隔开。可以使用“ iskeyword”选项更改。空行也被视为一个单词。

WORD由一系列非空白字符组成,并用空格分隔。空行也被视为WORD。

我感到word并且WORD是同一回事。它们都是用空格分隔的一系列非空白字符。空行可以同时视为wordWORD

问题:
它们之间有什么区别?
为什么/时,会有人使用WORDword

我已经做过Google和SO搜索,但是它们的搜索引擎解释WORDword就像我在搜索一样Vim word vs word,当然找不到有用的东西。


2
对此进行了解释甚至说明:h 03.1。请检查用户手册。
2014年

10
搜索时您的问题改变了东西vim WORD and word-这是第一个搜索结果:)
Al.G.

1
@ Al.G。很高兴知道。谢谢!
octref 2015年

2
英文“或”中有歧义。他们的意思是:一个单词由一系列(字母或数字或下划线),XOR(其他非空白字符的序列)组成,并用空格(空格,制表符,)隔开。
user1433150 '18

@ user1433150很有帮助,谢谢。但是即使进行了澄清,仍然存在一些令人困惑的地方。他们说:“或由空格分隔的其他非空白字符序列(空格,制表符,)”,但如果是这样,则仅表示任何单词。因此在我看来,他们说“对所有内容进行XOR设置都较小”。那是对的吗?
查理·帕克

Answers:


113
  • 单词始终由空格分隔。
  • 单词由可配置的非关键字字符定界。空格字符不是关键字,通常其他字符(例如()[],-)也不是关键字。因此,单词通常比单词小。单词导航更细粒度。

This "stuff" is not-so difficult!
wwww  wwwww  ww www ww wwwwwwwww    " (key)words, delimiters are non-keywords: "-! and whitespace
WWWW WWWWWWW WW WWWWWW WWWWWWWWWW   " WORDS, delimiters are whitespace only

1
请注意,您可以使用:set iskeyword更改'W'的功能。有关更多信息,请参见:help'iskeyword'。
杰西·罗斯

上面的例子是错误的。双引号也是单词(或一个单词的一部分,取决于'iskeyword'选项)。因此,它也应标记为“ w”。以及破折号。
Flashrunner

@Flashrunner取决于'iskeyword' 选项,正如Jared Ross所提到的。默认情况下,它可以像我写的那样工作。
Ingo Karkat

:set iskeyword=a-z,A-Z,\",- |This |"stuff" |is |not-so |difficult|! :set iskeyword=a-z,A-Z |This |"|stuff|" |is |not|-|so |difficult|! |-是“ w”停止的地方。如您所见,它总是一个词。
Flashrunner

贾里德·罗斯的评论也是错误的。iskeyword更改“ w”而不是“ W”的作用。
Flashrunner

20

如果在下一行中的光标处于打开状态时执行viw“选择内部wordapp,它将选择app

app/views/layouts/admin.blade.php

如果在光标位于同一位置的同时执行viWWORD),它将选择整个字符序列。AWORD包括words,这些字符与英文单词一样,而与英文单词不同,例如星号,斜杠,括号,方括号等。


上面说明的最后一段不清楚。它遗漏了一些至关重要的词,这些词本来就很明显。
Praym

14

根据Vim文档(:h 03.1)

  • 单词以非单词字符结尾,例如“。”,“-”或“)”。

  • WORD严格以空格结尾。这可能不是正常意义上的单词,因此是大写的。

例如。

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

如果您的光标位于m(以上为m)

  • 一个单词将表示“更多”(即以“)分隔”非单词字符)

  • 而WORD的意思是“更多”。(即仅由空格分隔)

同样,如果您的光标位于p(特殊)处

  • 一个词的意思是“特殊”
  • 而WORD的意思是“特殊/分隔/单词”

14

为了补充先前的答案,我将其可视化为:单词比单词大,它涵盖了更多... 在此处输入图片说明


0

另一种说法。如果是ur编码,并且想通过停在定界符处的行移动,则事物行以“()。[],:”使用w。

如果您想绕过这些内容而只想听话,比如说小说或短篇小说,请使用W。

小w可能是编码最常用的一种。取决于您在代码中的位置。


0

在理解“单词”的定义时,这是一个语法问题。

首先,我被这个定义的中文版本卡住了(可能是误译)。


该定义绝对是正确的,但应这样阅读:

A word consists of:
   [(a sequence of letters,digits and underscores),
or (a sequence of other non-blank characters)], 
separated with white space (spaces, tabs, <EOL>).

仅当分隔两种相同类型的“单词”时才需要空格字符


括号中的更多示例如下:

(example ^&$%^ Example)三个“单词”:(example),(^& $%^)和(Example)

(^ &^&^ ^ && ^&^ )两个“单词”:(^&^ &^ ^)和(&& ^ &^

(我们在stackoverflow中)五个“单词”:(we),('),(re),(in)和(stackoverflow)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.