Ответ 1
А, я нашел ответ.
:1,$join
Работает как шарм.
EDIT: Как указано в комментарии:
:%join -or- :%j
... удаляет диапазон.
Я хочу объединить все строки в файле в одну строку. Каков самый простой способ сделать это? Я неудачно пытался использовать подстановку (\r\n
или \n
, похоже, не правильно подобрали в случае s/\r\n//
в Windows). Использование J
в выражении диапазона тоже не работает (возможно, потому, что диапазон больше не находится в "синхронизации" после выполнения первой команды).
Я пробовал :1,$norm! J
, но это делало только половину файла - это имеет смысл, потому что он просто присоединяется к каждой строке один раз.
А, я нашел ответ.
:1,$join
Работает как шарм.
EDIT: Как указано в комментарии:
:%join -or- :%j
... удаляет диапазон.
Другой способ:
ggVGJ
"ggVG
" визуально выбирает все строки, а "J
" соединяет их.
Вы можете сделать это с помощью трех нажатий клавиш, начиная с обычного режима:
:%j
:
переходит в режим командной строки%
относится ко всем строкам в файлеj
выполняет команду соединенияТеперь кажется, что это добавляет пробел между строками. Я не уверен, хотите ли вы этого.
Вы можете сделать это тремя нажатиями клавиш:
:1,$j
не значим?
Cryptic way:
[email protected]@q
(первые три q
очищают регистр q
, [email protected]
записывает макрос в регистр q
, который выполняет соединение, затем вызывает q
, а последний @q
запускает его.
Im удивил, что никто даже не упомянул иначе:
:%s/\n/ /
Я также удивлен, что никто не указал, что диапазон 1,$
имеет сокращенное обозначение, написанное %
.
(Это не делает то же самое, что и объединение строк, но в зависимости от обстоятельств, которые могут быть более подходящими.)
Что делать, если я хочу присоединиться, но заменить конец строки на ";" ? Я думаю, один из способов - сначала заменить $ на; а затем присоединиться, но есть ли более простой способ?