gJ
Сочетание делает это; от :help gJ
:
Соедините [количество] строк, как минимум, из двух строк. Не вставляйте и не удаляйте пробелы.
Вы можете привязать его к J
, если хотите сохранить нажатие клавиши:
:nnoremap J gJ
Обратите внимание, что это не удаляет пробелы, поэтому, если текущая строка заканчивается пробелом или следующая строка начинается с одного или нескольких пробелов, они останутся как есть .
Так:
Hello
world
становится:
Hello world
Мы могли бы использовать Jx
в этом случае, тогда это будет Helloworld
, но это не будет работать во всех случаях; из справки:
Соедините выделенные строки, как минимум, двумя строками. Удалить отступ и вставить до двух пробелов
[...]
Эти команды, за исключением "gJ", вставляют один пробел вместо конечного пробела или следующая строка начинается с ')'.
Так что в некоторых случаях вставляется более одного пробела или нет пробела. Насколько я понимаю, нет простого способа изменить это поведение; Я создал функцию для изменения, gJ
чтобы всегда соединяться без пробелов:
" Like gJ, but always remove spaces
fun! JoinSpaceless()
execute 'normal gJ'
" Character under cursor is whitespace?
if matchstr(getline('.'), '\%' . col('.') . 'c.') =~ '\s'
" When remove it!
execute 'normal dw'
endif
endfun
" Map it to a key
nnoremap <Leader>J :call JoinSpaceless()<CR>
Смотрите также: :help J
,:help 'joinspaces'
Еще один трюк, который вы можете попробовать, - это заменить. Иногда это может быть полезно.
Сценарий: удалить последний символ и присоединиться к следующей строке:
Например,
будет выглядеть так:
источник
Создайте макрос и используйте его повторно:
qaJxq
Теперь повторите макрос,
a
используя, @aгде вы хотите, чтобы соединить две строки без пробела.@@Повторим предыдущий макрос. Таким образом, вы можете просто удерживать, @чтобы объединить несколько строк.
источник
@a
когда можно печататьJx
? Одинаковое количество нажатий клавиш и SHIFT!3@a
для объединения 3 строк, тогда как выполнение3Jx
объединит 3 строки с пробелами, а затем удалит пробел между второй и третьей строками, оставляя пробелы между другими строками.Чтобы всегда объединяться с одним пробелом:
Чтобы присоединиться без пробела вообще (удаляет завершающий + ведущий пробел):
источник
Выберите строки, которые вы хотите объединить, введите команду Ex , набрав двоеточие
:
в обычном режиме. Затем введите эту команду:s/$\n\s*//gc
Вся команда должна выглядеть аналогично:
:'<,'>s/$\n\s*//gc
Объяснение:
'<,'>
означает, что мы изменяем только строки, выбранные в визуальном режиме./$\n\s*
является регулярным выражением шаблона. Мы ищем совпадение, которое заканчивается$
символом новой строки\n
и имеет неопределенное количество пробелов*
после этого.s/pattern//gc
является командой замены, чтобы найти каждый шаблон и заменить его пустым символом при подтверждении.источник