我想在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变得疯狂......
有什么方法可以实现我的目标,即在保留区分大小写的搜索时完成不区分大小写的命令?
答案 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)
您可以保留ignorecase
和smartcase
以完成命令行,并使用此映射使您的搜索区分大小写:
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()
时文字:
会闪烁,但我想这无法帮助。