3

В Vim, как, наверное, все вы знаете, можно дать счет командам в "обычном режиме", поставив перед ними число.

Как например 4dd , который удалит 4 строки.

Мне интересно, если есть способ передать счет в команду командной строки vim (команда, начинающаяся с двоеточия), чтобы повторить его несколько раз.

Что-то вроде 2:normal oHi! повторить normal oHi! Команда 2 раза.

Есть ли способ сделать что-то подобное в Vim?

1 ответ1

3

Многие:-команды принимают количество в качестве аргумента. Например:

:delete 4

Удаляет четыре строки, начиная со строки, на которой находится курсор.

Некоторые:-команды берут счет перед именем команды:

:2next

Будет редактировать второй следующий файл в списке аргументов.

Тем не менее, команда :normal не принимает счет в любой форме. Вы должны были бы обернуть это в цикл:

for i in range(1,2)
    normal oHi!
endfor

И, конечно, вы можете создать пользовательскую команду, которая будет делать то, что вы хотели:

command -count=1 -nargs=+ Normal for i in range(1,<count>) | exe 'normal ' . <q-args> | endfor

-count=1 устанавливает счетчик по умолчанию равным 1, и вы вызываете его вторым способом:

:2Normal oHi!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .