在vim中搜索单词?

201

我可以使用/word命令在vim中搜索单词。如何仅搜索word,而不包括word1word2

我可以使用/\来仅搜索精确匹配的单词,而不是包含其他单词的字符串。

3
可能是在vim中查找完全匹配的重复问题。 - LSchueler
5个回答

267

就像这样:

/\<word\>

\<表示一个单词的开始,\>表示一个单词的结束。

加上@Roe的评论:
VIM提供了一个快捷方式。如果屏幕上已经有单词并且您想查找其他实例,请将光标放在单词上,并按'*'搜索文件中的下一个实例或按'#'向后搜索。


6
将光标置于单词上,按下 *(向前)或#(向后)是一种快捷方式。 - falstro
1
为什么这样做有益,而不是只做:/word? - jimh
3
假设你有一个变量"data"和它的有效指示"data_valid"。如果我只想搜索"data"而不是"data_valid",那么'/data'无法完成任务。我需要告诉vim在何处停止匹配模式。 - Nathan Fellman
1
有没有 vim 配置可以使其在不用包裹搜索字符串的情况下搜索精确单词? - daparic
@eigenfield,输入g*似乎可以实现你想要的功能。http://vimdoc.sourceforge.net/htmldoc/pattern.html#gstar - leafmeal
显示剩余3条评论

95
  1. 使用命令“vim 文件名”打开文件
  2. 按“/”键
  3. 输入您要搜索的单词
  4. 按Enter键

2
有人能解释一下为什么这个可能会被踩吗?对我来说是有效的。 - Kiee
25
因为原帖要求特别搜索 "word"。这里发布的解决方案基本上是搜索 "%word%",无论是 "thiswordisawesome" 还是 "word56" 或者 "26word"。 - Jguy
18
因为提问者明确表示已经了解/命令,所以这个回答完全没有帮助。 - cmaster - reinstate monica

36

如果您正在使用Ubuntu,按照以下步骤:

  1. 按下 / 并键入要搜索的单词
  2. 要向前搜索,请按下“SHIFT”键和 *
  3. 要向后搜索,请按下“SHIFT”键和 #

1
如何突出显示搜索的单词? - jorge saraiva
3
首先,你可能会更快地得到答案,如果你提出一个新问题(而不是等待某人在你询问三个月后偶然发现这个评论)。其次,您可以在Vim中执行:set hls来突出显示搜索结果。要关闭高亮显示,请执行:set nohls - Nathan Fellman
1
只有当执行/word的第一个结果恰好是word而不是word.+时,这才真正有效。 - pushkin
这在我的 AWS Ubuntu 18.04 实例上无法运行。 如果有必要,可以使用 Windows Git-Bash 进行 SSH 到 Ubuntu 服务器。 很奇怪。 - CodingMatters

34

基本搜索:

  • /pattern - 向前搜索匹配的pattern
  • ?pattern - 向后搜索匹配的pattern
  • n - 重复向前搜索
  • N - 重复向后搜索

一些可能需要设置的变量:

  • :set ignorecase - 不区分大小写
  • :set smartcase - 如果使用了大写字母则区分大小写
  • :set incsearch - 显示匹配项作为搜索结果

7
这不是OP所要求的。 - Uyghur Lives Matter

1

使用 vim 进行基本搜索(打开文件后):

- 在计算机键盘上按下 ESC

- 在键盘上按下正斜杠符号 /

- 输入您要搜索的单词或符号;例如,要搜索术语“rbmq”,请输入 /rbmq

- 按下 Enter

- 按下n向前搜索(向文件结尾移动),按下N向后搜索(向文件开头移动)


1
那个回答如何解决问题?楼主已经表明他们意识到了这一点。问题是如何避免像123rbmq123这样的匹配... - Tomerikoo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接