Удалить новую строку в Vim
есть ли способ удалить новую строку в конце строки в Vim, так что следующая строка добавляется к текущей строке?
например:
Evaluator<T>():
_bestPos(){
}
Я хотел бы оставить все это в одну строку без копирования строк и вставить их в предыдущее. Похоже, что я должен быть в состоянии поместить курсор в конец каждой строки, нажать клавишу и перейти к следующей строке на тот же самый курсор.
конечный результат:
Evaluator<T>(): _bestPos(){ }
Is это возможно в Vim?
12 ответов:
Если вы находитесь в первой строке, нажмите (верхний регистр)J соединит эту строку и следующую строку вместе, удалив новую строку. Вы также можете объединить это с подсчетом, поэтому нажмите
3Jобъединит все 3 линии вместе.
конечно. Vim распознает символ \n как новую строку, поэтому вы можете просто искать и заменять. В командном режиме введите:
:%s/\n/
находясь на верхней строке в обычном режиме, нажмите Shift+j.
вы можете добавить счет тоже, так что
3Jв верхней строке соединит все эти линии вместе.
Jудаляет лишние начальные интервалы (если таковые имеются), соединяя линии с одним пробелом. (За некоторыми исключениями: после/[.!?]$/, два пробела могут быть вставлены; перед/^\s*)/, пробелы не вставляются.)если вы не хотите, что поведение,
gJпросто удаляет новую строку и не делает ничего умного с пробелами вообще.
все следующее предположим, что курсор находится на первой строке:
использование обычных сопоставлений:
3Shift+J
пример команды:
:,+2jчто является аббревиатурой
:.,.+2 joinкоторый также может быть введен с помощью следующего ярлыка:
3:j
еще более короткая команда Ex:
:j3
set backspace=indent,eol,startв свой .vimrc позволит вам использовать
backspaceиdeleteon\n(новая строка) в режиме вставки.set whichwrap+=<,>,h,l,[,]позволит вам удалить предыдущий LF в обычном режиме с
X(когда в col 1).
Это, вероятно, зависит от ваших настроек, но я обычно делаю это с
A<delete>здесь
Aдобавляется в конце строки. Вероятно, требуетсяnocompatibleрежим :)
<CURSOR>Evaluator<T>(): _bestPos(){ }курсор в первую строку
Теперь, в обычном режиме do
shift+v 2j shift+jили
V2jJ: нормальный V2jJ
Я бы просто нажал A (append to end of line, переводит вас в режим вставки) в строке, где вы хотите удалить новую строку, а затем нажмите delete.
Если вы не против использовать другие инструменты оболочки,
tr -d "\n" < file >t && mv -f t file sed -i.bak -e :a -e 'N;s/\n//;ba' file awk '{printf "%s", }' file >t && mv -f t file
проблема в том, что кратные char 0A (\n), которые невидимы, могут накапливаться. Предположим, вы хотите очистить от строки 100 до конца:
ввод ESC и : (командир терминала)
:110,$s/^\n//в скрипте vim:
execute '110,$s/^\n//'пояснение: от 110 до конца поиск строк, которые начинаются с новой строки (пусты) и уберите их
Comments