如何使用"进行vim / vi shift-8搜索关键字。"

时间:2014-12-19 20:05:10

标签: vim vi

我一直使用vim shift-8来搜索courser下的关键字。当关键字很简单时,它可以正常工作,即字母数字+下划线。但是如果有“。”在关键字中。它只搜索由“。”分隔的关键字部分。

Ex:“a.b”,如果我的光标在a上,则shift-8将搜索“a”。

是否有捷径可以搜索“a.b”作为一个整体。

由于

3 个答案:

答案 0 :(得分:3)

a.b不是一个,而是两个关键字,因为.通常不属于关键字字符集。您有两种选择:

  1. 使.成为关键字字符。使用:set iskeyword+=.(或:setlocal仅用于单个缓冲区。另请注意,某些文件类型插件可能会更改该选项。)请注意,这会影响w之类的动作,并可能导致问题语法高亮。
  2. 使用像SearchHighlighting plugin这样的插件,*命令扩展为可视模式。有了它,您可以选择任何文本(例如a.b通过viW),然后通过*搜索匹配项。 (插件页面包含指向其他插件的链接;其中有几个插件。)

答案 1 :(得分:2)

这是可能的。根据手册,“*”/“#”使用整个单词进行搜索,并且有一种方法可以更改vim认为的内容一个字。包含该设置的变量为iskeyword,默认为@,48-57,_,192-255!-~,^*,^|,^",192-255等值。

您可以使用以下命令之一

打印当前设置
:set isk
:set iskeyword

尝试将其设置为类似@,46,48-57,_,192-255的内容。重要的是在设置中包含 46 ,这是“.”字符。以下命令可以完成这项工作:

:set iskeyword=@,48-57,_,192-255
:set isk+=.

答案 2 :(得分:1)

请参阅'iskeyword'的帮助:

                                                *'iskeyword'* *'isk'*
'iskeyword' 'isk'       string (Vim default for MS-DOS and Win32:
                                            "@,48-57,_,128-167,224-235"
                                   otherwise:  "@,48-57,_,192-255"
                                Vi default: "@,48-57,_")
                        local to buffer
                        {not in Vi}
        Keywords are used in searching and recognizing with many commands:
        "w", "*", "[i", etc.  It is also used for "\k" in a |pattern|.  See
        'isfname' for a description of the format of this option.  For C
        programs you could use "a-z,A-Z,48-57,_,.,-,>".
        For a help file it is set to all non-blank printable characters except
        '*', '"' and '|' (so that CTRL-] on a command finds the help for that
        command).
        When the 'lisp' option is on the '-' character is always included.
        NOTE: This option is set to the Vi default value when 'compatible' is
        set and to the Vim default value when 'compatible' is reset.

因此,如示例所示,您可以

set isk=a-z,A-Z,48-57,_,.,-,>

* (以及其他命令)会在单词的定义中包含.