Есть ли способ удалить символ новой строки в конце строки в Vim, чтобы следующая строка добавлялась к текущей строке?
Например:
Evaluator<T>():
_bestPos(){
}
Я хотел бы поместить все это в одну строку без копирования строк и вставки их в предыдущую. Кажется, что я должен быть в состоянии поставить курсор в конец каждой строки, нажать клавишу и перейти к следующей строке на ту же, на которой находится курсор.
Конечный результат:
Evaluator<T>(): _bestPos(){ }
Возможно ли это в Vim?
Ответы:
Если вы находитесь на первой строке, нажатие (верхний регистр) Jсоединит эту строку и следующую строку вместе, удалив новую строку. Вы также можете объединить это с подсчетом, поэтому нажатие
3J
объединит все 3 строки вместе.источник
gJ
избегайте добавления пробелов, которые Vim может добавить при использованииJ
.V
(Режим визуальной линии), затем нажмитеJ
илиgJ
:join
и:join!
это соединит линии, сохраняя положение курсора, и не оставляйте пробелов в точке соединения. Вы также можете отобразить это как:nnoremap <Leader>j :joing<cr>
иnnoremap <Leader>gj :join!<cr>
.Безусловно. Vim распознает символ \ n как новую строку, поэтому вы можете просто искать и заменять. В командном режиме введите:
источник
V
обычный блок и заменить его.Находясь на верхней строке в обычном режиме, нажмите Shift+ j.
Вы также можете добавить счетчик, так что
3J
в верхней строке будут объединены все эти строки.источник
Как уже упоминалось в других ответах, (верхний регистр)
J
и поиск + замена\n
могут использоваться в основном для удаления символов новой строки и объединения строк.Но чтобы избавиться от завершающего символа новой строки в последней строке , вам нужно сделать это в Vim:
источник
:set noendofline
не работает безbinary
?J
удаляет лишний начальный интервал (если есть), соединяя строки одним пробелом. (За некоторыми исключениями: после/[.!?]$/
, два пробела могут быть вставлены; до/^\s*)/
этого пробелы не вставляются.)Если вы не хотите такого поведения,
gJ
просто удалите новую строку и не сделайте ничего умного с пробелами вообще.источник
Все следующие предполагают, что ваш курсор находится на первой строке:
Используя нормальные отображения:
3Shift+J
Используя команды Ex:
Что является сокращением от
Который также можно ввести с помощью следующего ярлыка:
3:j
Еще более короткая команда Ex:
источник
:j!3
в вашем .vimrc позволит использовать
backspace
иdelete
на\n
(символ новой строки) в режиме вставки.позволит вам удалить предыдущий LF в обычном режиме с помощью
X
(когда в столбце 1).источник
Это, вероятно, зависит от ваших настроек, но я обычно делаю это с
A<delete>
Где
A
добавить в конце строки. Вероятно, требуетсяnocompatible
режим :)источник
курсор в первой строке
СЕЙЧАС в НОРМАЛЬНОМ РЕЖИМЕ
или
: обычный V2jJ
источник
Я бы просто нажал A (добавить в конец строки, переводит вас в режим вставки) в строке, где вы хотите удалить новую строку, а затем нажмите удалить.
источник
:help 'backspace'
если вы не возражаете против использования других инструментов оболочки,
источник
ggVGJ
.Проблема в том, что кратные символы 0A (\ n), которые невидимы, могут накапливаться. Предположим, вы хотите очистить строку 100 до конца:
Набрав ESC и: (командир терминала)
В скрипте vim:
Пояснение: с 110 до конца ищите строки, которые начинаются с новой строки (не заполнены) и удаляйте их
источник