Определите функцию в Vim, которая используется только один раз (без редактирования .vimr c) - PullRequest
1 голос
/ 11 апреля 2020

Мне было интересно, есть ли способ определить очень простую функцию без редактирования .vimr c. Например, однажды мне нужна очень простая функция, и, вероятно, я не буду использовать ее снова в ближайшее время:

function Func()
    :%s/bmp/png/g
    :w
    :next
endfunction

Где в текущем открытом экземпляре vim я могу определить ее, чтобы она была удалена после завершения? Или, может быть, я должен использовать что-то еще, кроме функции для этого вида использования?

Большое спасибо:)

Ответы [ 3 ]

0 голосов
/ 11 апреля 2020

function - команда; это не специальный синтаксис, используемый только в .vimrc.

Если вы введете :function Func() в сеансе vim, вы начнете определение. После того, как вы нажмете Enter, вам будет предложено ввести : для следующей строки функции, которую вы можете обозначить как %s/bar/png (начальный : не обязателен). Вам будет предложено ввести следующую строку определения функции, пока вы не введете endfunction, после чего выполнение function будет завершено.

Затем вы можете вызвать функцию с помощью :call Func() как обычно.

0 голосов
/ 12 апреля 2020

Как уже упоминалось в комментариях, bufdo решает XY часть этой проблемы

bufdo %s/.../.../g | write
0 голосов
/ 11 апреля 2020

Простой: скопируйте функцию в буфер обмена и запустите:

:@+ Enter

Я предлагаю добавить карту для вызова функции:

function Func()
    :%s/bmp/png/g
    :w
    :next
endfunction
nnoremap <Leader>s call Func()<CR>

Конечно, комбинация клавиш - это ваша выбор!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...