Карта Vim для удаления текста в скобках - PullRequest
2 голосов
/ 20 января 2020

Я создал карту для удаления текста внутри скобок, даже если курсор находится за скобками. Это карта:

nnoremap di( f(,di(

Я проверяю ее с помощью этого кода:

int main(int argc, char **argv) {

Карта работает только тогда, когда курсор находится где-то до (. Если я поставлю курсор после (, то ничего не будет удалено. Почему карта не работает?

Обратите внимание, что попробуйте f(,di(, не определяя карту, с которой он работает (он удаляет текст внутри скобок независимо от начальной позиции курсора). Только когда я сопоставляюсь с di(, это не работает.

1 Ответ

1 голос
/ 20 января 2020

Я нашел похожий вопрос на vi.stackexchange.com . Карта не работала из-за поведения, задокументированного в :help map-error. Решение состоит в том, чтобы использовать :silent! для предотвращения прерывания карты при ошибке. Рабочая версия карты:

nnoremap <silent> di( :silent! normal! f(,di(<cr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...