Vim: завершение команды без учета регистра

Я бы хотел, чтобы в Vim было выполнено исключение из командной строки ex-command.

Я могу выполнить это с помощью:

set ignorecase
" Maybe with
set smartcase

Однако проблема заключается в том, что это (очевидно) делает поиск с / без учета регистра, чего я не хочу.

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

Этот плагин позволил завершить ввод команды без учета регистра (и даже больше функциональности), но после этого также завершил завершение завершения. Например, когда я сопоставил с ключом "expand" :NeoBundleUpdate не перечислял все плагины, управляемые neobundle.vim, но вводил символ .

Я попытался сделать что-то вроде:

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

но это заставило Вима сходить с ума...

Есть ли способ, которым я могу достичь своей цели - не выполнять регистрацию без учета регистра, сохраняя при этом поиск с учетом регистра?

4 ответа

Справка: 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 (если вам нужно изменить чувствительность к регистру) в предложенном вами виде.


Вы можете сохранить ignorecase и smartcase для завершения командной строки и сделать свой smartcase чувствительным к регистру с помощью этого сопоставления:

nnoremap / /\C

См. :help \C


После получения подсказки от @mike, что переход вниз по пути nmap - правильный путь, я придумал следующие функции:

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

Это решило мою проблему именно так, как я хотел. Единственное, что меня :call IgnoreCase() это то, что текст :call IgnoreCase() мерцает, когда я нажимаю : но я думаю, что это не поможет.


Я думаю, вы ищете вариант "wildignorecase".

licensed under cc by-sa 3.0 with attribution.