5

Мне нравится команда J для объединения многих строк, но мне не нравится считать, сколько строк я хочу присоединить. Я бы предпочел дать движение. Это может быть подделано с помощью V{motion}J ; Есть ли способ, который не включает в себя вход в визуальный режим (следовательно, забивая * регистр)?

2 ответа2

4

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

nnoremap J :set operatorfunc=Joinoperator<CR>g@
nnoremap gJ :set operatorfunc=GJoinoperator<CR>g@
onoremap J j
func! Joinoperator(submode)
        '[,']join
endfunc
func! GJoinoperator(submode)
        '[,']join!
endfunc 

Обратите внимание, что при использовании этого фрагмента невозможно использовать J для объединения пары строк - необходимо будет использовать Jj (или JJ из-за omap J j).

3

Вы можете сделать что-то вроде:

:.,/pattern/join

По сути, вы говорите Vim присоединиться к ряду строк . будучи текущей строкой, курсор включен, а последняя строка является первым совпадением pattern .

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