Как задать счетчик для команды командной строки Vim (например, :insert, :normal и т. д.)

Как задать счетчик для команды командной строки Vim (например, :insert, :normal и т. д.)

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

Например 4dd, это приведет к удалению 4 строк.

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

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

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

решение1

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

: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!

Связанный контент