Я знаю, что в Vim я часто могу повторить команду, просто добавив перед ней число. Например, можно удалить 5 строк:
5dd
Также часто можно указать диапазон строк для применения команды, например
:10,20s:hello:goodbye:gc
Как я могу выполнить «вертикальное редактирование»? Я хотел бы, например, вставить определенный символ, скажем, запятую, в начале (пропуская пробелы, то есть то, что вы получите, если вы введете запятую после Shift-I в командном режиме) каждой строки в данном ассортимент. Как это может быть достигнуто (не прибегая к периоду падения-периода-падения)?
^\(\s*\)
захватывает начальный пробел и сохраняет его в регистр, который затем можно читать\1
.Ctrl- vпереходит в визуальный режим поблочно. Затем вы можете переместить ( hjkl-образно, как обычно), и если вы хотите вставить что-то в несколько строк, используйте Shift- i.
Итак, для текста:
если вы нажмете Ctrl- vс курсором на 1, нажмите jдважды, чтобы перейти на два столбца вниз, затем Shift- i,ESC, ваш текст будет выглядеть так:
(многострочная вставка имеет небольшую задержку и не будет отображаться до тех пор, пока вы не нажмете ESC).
источник
i
без клавиши Shift?Вот для чего предназначена команда: norm (al):
источник
Если вы уже используете "." чтобы часто повторять вашу последнюю команду, я нашел это пока самым удобным решением. Это позволяет вам повторять вашу последнюю команду в каждой строке визуального блока, используя
источник
.
в визуальном режиме работает линейно. Я думаю, что визуальный режим в этом случае иногда может быть удобным для выбора диапазона строк. Но в этом случае команды и макросы более гибкие и мощные.Я считаю, что самый простой способ сделать это -
1) запишите макрос для одной строки, назовите его «а»; в этом случае один тип
2) выберите блок строк, к которому вы хотите применить макрос
3) используйте функцию 'norm' для выполнения макроса 'a' над этим блоком строк, т.е.
источник
Я думаю, что проще всего записать макрос, а затем повторять его столько раз, сколько захотите. Например, чтобы добавить запятую в начале каждой строки, введите:
чтобы повторить это 5 раз, вы вводите
источник
Я использую блочный визуальный режим . Это позволяет вам выполнять вставку / редактирование в нескольких строках (также называемое «вертикальное редактирование»).
источник
Когда ваши изменения уже сохранены в
.
операторе, сделайте следующее::norm .
источник
Помимо макросов, как уже было сказано, для конкретного случая вставки запятой в диапазон строк (скажем, от строки 10 до 20) вы можете сделать что-то вроде:
То есть вы можете создать пронумерованное групповое совпадение с помощью \ (и \) и использовать \ 1 в строке замены, чтобы сказать «заменить содержимым совпадения».
источник