如何在Vim或vi文本编辑器中查找单词

时间:2020-01-09 14:16:25  来源:igfitidea点击:

如何在Vi Vim中搜索和查找单词?
如何在Vim或vi文本编辑器中找到Word?

说明:Vi和vim是Linux,macOS,Unix和* BSD系列操作系统的文本编辑器。

Vim是一个免费的开源文本编辑器。
可以使用各种vi文本编辑器键进行搜索。
该页面显示了如何在Linux或类Unix系统上运行的vi或vim文本编辑器中搜索和查找单词。

在Vim或vi文本编辑器中查找单词

要使用Vim/vi搜索当前单词:

  • 在普通模式下,您可以向前或向后搜索。
  • 可以通过按/,然后执行您的搜索模式/单词在vim/vi中向前搜索。
  • 要在vi/vim中向后搜索,请按,然后输入搜索模式/单词。
  • 一旦在vim中找到了单词,您可以按n键直接返回到下一个出现的单词。按下N键直接朝相反的方向前进。

让我们看一些例子。

在vim/vi中搜索单词

让我们打开一个名为/etc/passwd的文件:

$ vi /etc/passwd

或者

$ vim /etc/passwd

在"前进"方向上搜索名为Hyman的单词:

  • 按ESC键
  • 输入/Hyman
  • 点击n向前搜索名称为Hyman的单词的下一个出现。您可以按N键向后搜索。

如何在vim/vi中向后搜索单词

让我们在当前目录中打开一个名为demo.txt的文件:

$ vi demo.txt

或者

$ vim demo.txt

在"向后"方向搜索名为bar的单词:

  • 按ESC键
  • 输入?bar
  • 点击" N"可向后搜索名为bar的单词的下一个匹配项。您可以按n向前搜索。

如何搜索当前单词

假设您使用cat命令显示了一个名为data.txt的文件,如下所示:

$ cat data.txt

输出示例:

192.168.2.254 - default router
192.168.2.253 - wifi        
192.168.2.252 - wifi bridge 
192.168.2.254 - dns server
192.168.2.30  - backup server
192.168.2.254 - firewall
192.168.2.18  - vm server
192.168.2.203 - RHEL7
192.168.2.254 - dhcp server
192.168.2.200 - SUSE server
192.168.2.201 - FreeBSD nfs server

在正常模式下,将光标移至任何说" 254"的词。
按 * 向前搜索单词254的下一个出现,或按 # 向后搜索

从CLI搜索并打开文件

vi/vim文本编辑器支持使用以下语法运行any:命令:

vi +commandHere fileName
vim +LineNumber fileName
vi +/searchTermHere fileName
vi +/LineNumberHere fileName
vim +/LineNumberHere fileName

要打开文件并转到名为main()的函数,请执行:

$ vim +/main filename-here

下一个打开的文件并转到第42行,执行:

$ vim +42 fileName

如何在vim/vi中搜索整个单词

我们可以使用以下语法在VIM中搜索整个单词:

/\<WORD-TO-SEARCH\>
# search for foo word 
/\<FOO\>
# search for FreeBSD word
/\<FreeBSD\>
# Case sensitive vs insensitive search done by adding the \C or \c #
/\<FreeBSD\>      " Case sensitive
/\<FreeBSD\>\C    " Case sensitive
/\<FreeBSD\>\c    " Case insensitive

Vim中不区分大小写的搜索

我们还可以使用以下两个配置选项在Vim中进行不区分大小写的搜索。
例如,忽略搜索模式中的大小写,执行:

:set ignorecase

现在搜索它以匹配Foo,foo,FOO等:

/foo

如果搜索模式包含大写字符,则另一个选项是覆盖ignorecase选项。

:set smartcase "

请注意,ignorecase也适用于vim下的搜索和替换选项。
搜索命令很容易获得帮助。
您需要做的就是执行以下命令:

:help /\c
:help /\C
:help 'ignorecase'
:help 'smartcase'