Nvim :help
页面,生成 于 源代码,使用 tree-sitter-vimdoc 解析器。
:set ignorecase再次搜索 “include”,现在它将匹配 “Include”、“INCLUDE” 和 “InClUDe”。(设置 'hlsearch' 选项以快速查看模式匹配的位置。)您可以使用以下命令再次关闭它:
:set noignorecase但让我们保持设置,搜索 “INCLUDE”。它将与 “include” 相同的文本完全匹配。现在设置 'smartcase' 选项
:set ignorecase smartcase如果您的模式中至少包含一个大写字符,则搜索将区分大小写。这样做是为了避免您必须输入该大写字符,所以您一定是想要匹配大小写才这样做的。这很聪明!设置了这两个选项后,您将找到以下匹配项
CTRL-C
和 MS-Windows 上的 CTRL-Break
中断它。:set rulerVim 将在窗口的右下角(如果有状态行,则在状态行中)显示光标位置。它看起来像这样
:set nowrapscan现在,当搜索到达文件末尾时,将显示一条错误消息
/default/2该命令搜索模式 “default”,然后移到该模式后的第二行的开头。将此命令应用于上一段,Vim 会在第一行找到单词 “default”。然后,光标向下移动两行,并停留在 “an offset” 上。
/const/e将光标放在 “const” 的 “t” 上。从该位置开始,添加一个数字会向前移动这么多字符。此命令将光标移到匹配项的下一个字符
/const/e+1正数将光标移到右侧,负数将光标移到左侧。例如
/const/e-1将光标移到 “const” 的 “s” 上。
/const/b+2将光标移到匹配项的开头,然后向右移动两个字符。因此它停留在 “n” 上。
/that //e等于
/that/e要使用相同的偏移量重复
/“n” 执行相同的事情。要重复同时删除之前使用的偏移量
//
?const?e-2“b” 和 “e” 保持其含义,它们不会随着 “?” 的使用而改变方向。
/const/-2这会找到下一个单词 “const”,然后向上移动两行。如果您使用 “n” 再次搜索,Vim 可能会从当前位置开始并找到相同的 “const” 匹配项。然后再次使用偏移量,您将回到起点。你将被困住!可能会更糟:假设下一行中还有另一个 “const” 匹配项。然后重复向前搜索将找到这个匹配项并向上移动两行。因此,您实际上会将光标向后移动!
/a*匹配 “a”、“aa”、“aaa” 等。但也匹配 “”(空字符串),因为零次也包括在内。 “*” 仅应用于它直接之前的项目。因此,“ab*” 匹配 “a”、“ab”、“abb”、“abbb” 等。要匹配整个字符串多次,它必须被分组到一个项目中。这是通过在它前面放置 “\(" 并在它后面放置 “\)” 来完成的。因此,此命令
/\(ab\)*匹配:“ab”、“abab”、“ababab” 等。以及 “”。
/ab\+匹配 “ab”、“abb”、“abbb” 等。它不会匹配 “a”,因为后面没有 “b”。
/folders\=匹配 “folder” 和 “folders”。
/ab\{3,5}匹配 “abbb”、“abbbb” 和 “abbbbb”。当省略 “n” 时,它默认为零。当省略 “m” 时,它默认为无穷大。当省略 “,m” 时,它正好匹配 “n” 次。例子
/ab\{-1,3}将匹配 “abbb” 中的 “ab”。实际上,它永远不会匹配超过一个 “b”,因为没有理由匹配更多。它需要其他东西来迫使它匹配超过下限。相同的规则适用于删除 “n” 和 “m”。甚至可以同时删除这两个数字,从而得到 “\{-}”。这将匹配它前面的项目零次或多次,尽可能少地匹配。该项目本身总是匹配零次。当与其他东西组合时,它很有用。例子
/a.\{-}b这将在 “axbxb” 中匹配 “axb”。如果使用此模式
/a.*b它将尝试使用 “.*” 匹配尽可能多的字符,因此它将匹配整个 “axbxb”。
/foo\|bar这匹配 “foo” 或 “bar”。可以串联更多的备选方案
/one\|two\|three匹配 “one”、“two” 和 “three”。要匹配多次,必须将整个内容放在 “\(" 和 “\)” 中
/\(foo\|bar\)\+这匹配 “foo”、“foobar”、“foofoo”、“barfoobar” 等。另一个例子
/end\(if\|while\|for\)这匹配 “endif”、“endwhile” 和 “endfor”。
/forever\&...这将在 “forever” 中匹配 “for”。例如,它不会匹配 “fortuin”。
/[a-z]“[ ]” 结构匹配单个字符。在其中,您指定要匹配的字符。您可以包括一个字符列表,如下所示
/[0123456789abcdef]这将匹配所包含的任何字符。对于连续的字符,您可以指定范围。“0-3” 代表 “0123”。“w-z” 代表 “wxyz”。因此,与上面相同的命令可以缩短为
/[0-9a-f]要匹配 “-” 字符本身,请将其放在范围的开头或结尾。接受这些特殊字符是为了便于在 “[ ]” 范围内使用它们(它们实际上可以在搜索模式的任何地方使用)
<Esc>
\t <Tab>
\r <CR>
\b <BS>
/"[^"]*"
/\a查找字母字符。这等效于使用 "/[a-zA-Z]"。以下是一些其他示例:
<Tab>
和 <Space>
) \S 非空格字符 [^ ] (不是 <Tab>
和 <Space>
) \l 小写字母 [a-z] \L 非小写字母 [^a-z] \u 大写字母 [A-Z] \U 非大写字母 [^A-Z]/\f\+"\f" 项目代表文件名字符。因此,这将匹配可以作为文件名的字符序列。哪些字符可以作为文件名的一部分取决于您正在使用的系统。在 MS-Windows 上,反斜杠包含在内,在 Unix 上则没有。这是使用 'isfname' 选项指定的。Unix 的默认值为
:set isfname isfname=@,48-57,/,.,-,_,+,,,#,$,%,~,=对于其他系统,默认值不同。因此,您可以使用 "\f" 创建一个搜索模式来匹配文件名,它会自动调整到您正在使用的系统。
/one\ntwo这将在以 "one" 结尾的行和以 "two" 开头的下一行匹配。要匹配 "one two" 以及,您需要匹配空格或换行符。用于此的项目是 "\_s"
/one\_stwo允许任意数量的空格
/one\_s\+two这也会匹配 "one " 在行尾,而 " two" 在下一行开头的情况。
/"\_[^"]*"这将找到可能跨越多行的双引号内的文本。
/\d\u\u\u\d\d\d另一种方法是指定有三个数字和字母,并使用计数
/\d\u\{3}\d\{3}使用 [] 范围代替
/[0-9][A-Z]\{3}[0-9]\{3}您应该使用哪一个?您可以记住的任何一个都可以。您可以记住的简单方法比您无法记住的复杂方法快得多。如果您能记住所有方法,那么请避免最后一种方法,因为它既需要更多输入,执行速度也更慢。
/\<\h\w*\>"\<" 和 "\>" 用于仅查找完整单词。"\h" 代表 "[A-Za-z_]",而 "\w" 代表 "[0-9A-Za-z_]"。
/\w\@<!\h\w*\w\@!