Vim:不区分大小写的ex命令完成

时间:2014-08-03 05:26:51

标签: vim case-sensitive case-insensitive

我想在Vim中完成不区分大小写的ex命令。

我可以通过以下方式实现这一目标:

set ignorecase
" Maybe with
set smartcase

然而,问题是这(显然)使/不区分大小写的搜索,我不想要。

https://github.com/thinca/vim-ambicmd

此插件确实启用了不区分大小写的ex命令完成(甚至更多功能),但之后也禁用了完成。例如,当我将<Tab>映射到“展开”键时,:NeoBundleUpdate <Tab>未列出neobundle.vim管理的所有插件,但输入了<Tab>字符。

我尝试过这样的事情:

nmap / :set noignorecase<CR>/
nmap : :set ignorecase<CR>:

但这让Vim变得疯狂......

有什么方法可以实现我的目标,即在保留区分大小写的搜索时完成不区分大小写的命令?

4 个答案:

答案 0 :(得分:3)

帮助:h / c说:

7. Ignoring case in a pattern                                   /ignorecase

If the 'ignorecase' option is on, the case of normal letters is ignored.
'smartcase' can be set to ignore case when the pattern contains lowercase
letters only.
                                                        /\c /\C
When "\c" appears anywhere in the pattern, the whole pattern is handled like
'ignorecase' is on.  The actual value of 'ignorecase' and 'smartcase' is
ignored.  "\C" does the opposite: Force matching case for the whole pattern.
{only Vim supports \c and \C}
Note that 'ignorecase', "\c" and "\C" are not used for the character classes.

Examples:
      pattern   'ignorecase'  'smartcase'       matches
        foo       off           -               foo
        foo       on            -               foo Foo FOO
        Foo       on            off             foo Foo FOO
        Foo       on            on                  Foo
        \cfoo     -             -               foo Foo FOO
        foo\C     -             -               foo

这会建议使用nnoremap / /\c或\ C(如果您需要更改区分大小写),建议的方式。

答案 1 :(得分:1)

您可以保留ignorecasesmartcase以完成命令行,并使用此映射使您的搜索区分大小写:

nnoremap / /\C

请参阅:help \C

答案 2 :(得分:0)

我认为你正在寻找&#39; wildignorecase&#39;选项。

答案 3 :(得分:0)

从@mike获得提示后,nmap路径向下是正确的方式,我想出了以下功能:

nnoremap : :call IgnoreCase()<CR>:
function! IgnoreCase()
    set ignorecase
endfunction
nnoremap / :call NoIgnoreCase()<CR>/
function! NoIgnoreCase()
    set noignorecase
endfunction

这解决了我的问题。唯一让我感到困惑的小事是,当我点击:call IgnoreCase()时文字:会闪烁,但我想这无法帮助。