如何在Vim中进行不区分大小写的搜索

时间:2010-02-18 09:17:00

标签: search vim case-insensitive

我想搜索一个大写单词,例如文件中的COPYRIGHT。我尝试执行搜索:

/copyright/i    # Doesn't work

但它不起作用。我知道在Perl中,如果我将i标志放入正则表达式,它会将正则表达式转换为不区分大小写的正则表达式。似乎Vim有自己的方式来表示不区分大小写的正则表达式。

15 个答案:

答案 0 :(得分:1881)

您需要使用\c转义序列。所以:

/\ccopyright

要执行反向(大小写敏感匹配),请改用\C

答案 1 :(得分:620)

除了\cignorecase的建议外,我发现smartcase非常有用。如果您搜索包含大写字符的内容,它将执行区分大小写的搜索;如果你搜索纯粹小写的东西,它会做一个不区分大小写的搜索。您可以使用\c\C来覆盖此内容:

:set ignorecase
:set smartcase
/copyright      " Case insensitive
/Copyright      " Case sensitive
/copyright\C    " Case sensitive
/Copyright\c    " Case insensitive

请参阅:

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

答案 2 :(得分:259)

您可以在搜索之前在Vim中设置ic选项:

:set ic

要返回区分大小写的搜索,请使用:

:set noic

icignorecase

的简写

答案 3 :(得分:51)

您可以发出命令

:set ignorecase

之后,您的搜索将不区分大小写。

答案 4 :(得分:43)

要在区分大小写和不区分大小写的搜索之间切换,请在我的.vimrc

中使用此映射

nmap <F9> :set ignorecase! ignorecase?

答案 5 :(得分:17)

将此命令放入vimrc文件

set ic 

始终执行不区分大小写的搜索

答案 6 :(得分:17)

正如其他人所说:

:set ic

但很酷的是你可以用以下方式切换这些模式:

:set ic!

答案 7 :(得分:15)

您可以在vimrc这些命令中使用:

  • set ignorecase - 您的所有搜索都不区分大小写
  • set smartcase - 如果搜索包含大写字母
  • ,则搜索将区分大小写

如果您想使用ignorecase提供的内容,则需要设置smartcase

我最近写了an article about Vim search commands(内置命令和最有效的搜索插件)。

答案 8 :(得分:13)

旧的vim[grep]命令..

:vimgrep /example\c/ &
  • \ c 表示不区分大小写
  • \ C ,区分大小写
  • 将在当前缓冲区中搜索

enter image description here

答案 9 :(得分:9)

我更喜欢在搜索字符串的末尾使用@echo off setlocal enabledelayedexpansion set /p ans= New files or saved file n or a : if [%ans%] == [n] ( set /p mkfl= Files you want to save in [filename].[bat;cmd;txt] : set /p val= Enter Key to Save: echo %val% > !mkfl! SET /p t= y: ) else if [%ans%] == [a] ( set /p flnm= Type in the filename: set /p val= Type in words: set /p ans= Enter [s,o] to re-save or overwrite: if [%ans%] == [s] ( ECHO append ) else if [%ans%] equ [o] ( ECHO overwrite ) else ( ECHO problem ) SET /p z= f: ) else ( ECHO problem occurred during executing SET /p a= p: ) set /p fk= .

\c

答案 10 :(得分:7)

正如@huyz所提到的,有时候期望的行为是使用不区分大小写的搜索,但是区分大小写的替换。我的解决方案:

nnoremap / /\c
nnoremap ? ?\c

当您点击/?时,它会添加\c以进行不区分大小写的搜索。

答案 11 :(得分:2)

Vim有两种模式

1.edit mode

  1. 正常模式(Esc)
  2. 搜索将适用于普通模式

    区分大小写的

    / \ c

    <强> / \ C的搜索

答案 12 :(得分:2)

您可以默认设置ignorecase,在shell中运行

echo "set ic" >> ~/.vimrc

答案 13 :(得分:0)

一些重要信息,如果您想了解有关vim命令的更多信息,如下所述,您可以尝试以下步骤:

  • 在找到正确的命令后,按回车键,先在命令“ help”后加一个空格,然后用TAB键完成单词。
:help ignorecase
  • 将显示以下信息:

enter image description here

  • 您将能够向前和向后移动,还可以观看简短的命令,例如“ ignorecase”('ic')的情况。另外,另一个简短的例子可能是'smartcase'('scs'等):

enter image description here

  • 要离开文档,只需照常键入“:q”,您将返回“命令模式”。
:q

我真的希望所提供的信息对某人有所帮助。

最诚挚的问候,

答案 14 :(得分:0)

默认情况下,vi中的所有搜索均区分大小写。要进行不区分大小写的搜索,请进入命令模式(按Escape键),然后键入-
:set ignorecase
您也可以输入- :set ic的缩写。

要更改为区分大小写模式,请键入-
:set noignorecase:set noic在命令模式下