Как присоединиться к каждой второй строке в Vim?
Я хотел бы объединить много (~1000) строк, но только каждую нечетную со следующей. От руки я мог сделать
Jj
500 раз и сделали это. Тем не менее, как я могу выполнить эти два оператора 500 раз в одной команде? Typing
500Jj
присоединится к следующим 500 линиям и затем двинется вниз на одну строку.
Пример:
Я имею:
a
b
c
d
e
f
g
h
Я хочу:
a b
c d
e f
g h
Редактировать: я пробовал картирование:
:map X Jj
500X
но, видимо, мне следует снова прочитать документы по картографированию. Не работает
5 ответов
Я бы сделал это:
начать запись макроса 'q':
qqJjq
повторить макрос 'q' 500 раз:
500@q
(на самом деле это не макрос с именем 'q', это именованный регистр с именем 'q'. вместо того, чтобы интерактивно заполнять этот регистр, как в 1., вы также можете сделать :let @q = "Jj"
а потом делай 2)
Чтобы сделать это в каждой строке файла:
:%normal J
или короче:
:%norm J
Чтобы сделать это только на части файла, выделите строки с помощью V или получите диапазон другим способом:
:'<,'>global/^/normal J
или короче:
:'<,'>g/^/norm J
Как насчет этого
: Г /$/ х
или же
: Г /$/ J!
и группировать каждые 3 строки
: Г /$/j3
Я не пользователь Vim, но проверяю онлайн документы, похоже
500(Jj)
может работать, так как он разбирает вещи внутри скобок как единое целое.