Как я повторяю редактирование на нескольких строках в Vim?

113
задан Matthias Braun 21 November 2017 в 16:35
поделиться

7 ответов

:10,20s/^/,/

Или использование макрос, запишите с:

q a i , ESC j h q

использование с:

@ a

Объяснение: q a начинает записывать макрос для регистрации a, q запись концов. Существуют регистры a к z доступны для этого.

103
ответ дан simeg 24 November 2019 в 02:37
поделиться

Ctrl - v переходит к визуальному режиму blockwise. Можно тогда переместиться ( h j k l - мудрый, как нормальные), и если Вы хотите вставить что-то на нескольких строках, используйте Сдвиг - я .

Так для текста:

abc123abc
def456def
ghi789ghi

, если Вы поражаете Ctrl - v с Вашим курсором по этому 1, совершает нападки j дважды для потери работоспособности по двум столбцам, тогда Сдвиг - я , ESC , текст был бы похож на это:

abc,123abc
def,456def
ghi,789ghi

(многострочная вставка имеет немного задержки и не представит после удара ESC ).

120
ответ дан rampion 24 November 2019 в 02:37
поделиться

Это что: норма (al) команда для:

:10,20 normal I,
54
ответ дан Cyber Oliveira 24 November 2019 в 02:37
поделиться

Я думаю, что самое легкое должно записать макрос, и затем повторять макрос так много раз, как Вы хотите. Например, для добавления запятой в начале каждой строки Вы вводите:

q a I , ESC j q

, чтобы повторить, что 5 раз, Вы входите

5 @ a
16
ответ дан wimh supports Monica 24 November 2019 в 02:37
поделиться

Я использую блок визуальный режим . Это позволяет, Вы для выполнения вставляете/редактируете через несколько строк (иначе 'вертикальные редактирования').

2
ответ дан ONODEVO 24 November 2019 в 02:37
поделиться

Кроме макросов, как уже отвечено, для конкретного случая вставки запятой в диапазоне строк (говорят от строки 10 - 20), Вы могли бы сделать что-то как:

:10,20s/\(.*\)/,\1

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

1
ответ дан Paolo Tedesco 24 November 2019 в 02:37
поделиться

Я считаю, что самый простой способ сделать это -

1) записать макрос для одной строки, назовите его 'a'; в этом случае можно набрать

qa I, ESC jq

2) выбрать блок строк, к которому вы хотите применить макрос, к

3) использовать функцию 'norm' для выполнения макроса 'a' над этим блок строк, т.е.

: '<,'> norm @ a
20
ответ дан 24 November 2019 в 02:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: