Как я могу сопоставить вызов функции, определенный плагином, таким образом, чтобы можно было вызывать счетчик? - PullRequest
0 голосов
/ 11 февраля 2019

В исходном коде Vimwiki следующая строка сопоставляет ключ = с выражением <Plug>VimwikiAddHeaderLevel.

nmap <silent><buffer> = <Plug>VimwikiAddHeaderLevel

К сожалению, это отображение не работает корректно со счетчиком.В частности, ввод 4=, по-видимому, имеет тот же эффект, что и набор =.

На основании этого vimcast я впервые попытался использовать регистр выражений для исправления сопоставления.

:nnoremap <buffer> = @=<Plug>VimwikiAddHeaderLevel<CR>

К сожалению, когда я набираю =, я получаю следующую ошибку.

E15: Invalid expression: <Plug>VimwikiAddHeaderLevel

Затем я попробовал метод :normal.

:nnoremap <buffer> = :normal <Plug>VimwikiAddHeaderLevel<CR>

Это не привело к ошибкам при вводе =, но также не оказало видимого влияния на буфер.Я также попробовал рекурсивную версию сопоставления, но она имела тот же эффект.

:nmap <buffer> = :normal <Plug>VimwikiAddHeaderLevel<CR>

Как правильно сопоставить, чтобы он мог принять счетчик?

1 Ответ

0 голосов
/ 12 февраля 2019

Вы не можете (легко [1]) решить это в отображении.Реализация плагина должна поддерживать счетчик, и, по-видимому, этот не имеет: <Plug>VimwikiAddHeaderLevel отображается на :<C-U>call vimwiki#base#AddHeaderLevel()<CR>, поэтому любой счет приведет к автоматически добавленному диапазону, который затем <C-U> удаляется.Функция vimwiki#base#AddHeaderLevel() должна была бы получить счет через v:count (или v:count1), но это не так.

В качестве альтернативы, :function может быть определен с атрибутом rangeи затем будет передан a:firstline и a:lastline;ср.:help function-range-example.Или <C-U> должен быть удален, тогда функция будет вызываться один раз в строке.

Итак, если вы считаете, что имеет смысл поддерживать подсчет, отправьте вопрос (или запрос на извлечение) вproject.

[1] Ну, если эффект может быть получен путем многократного выполнения отображения в одном и том же месте, вы можете написать функцию-обертку с циклом :for для v:count, которая вызывает отображение через

:execute "normal \<Plug>VimwikiAddHeaderLevel"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...