Подтвердить что ты не робот

В Vim, какой самый простой способ объединить все строки в файле в одну строку?

Я хочу объединить все строки в файле в одну строку. Каков самый простой способ сделать это? Я неудачно пытался использовать подстановку (\r\n или \n, похоже, не правильно подобрали в случае s/\r\n// в Windows). Использование J в выражении диапазона тоже не работает (возможно, потому, что диапазон больше не находится в "синхронизации" после выполнения первой команды).

Я пробовал :1,$norm! J, но это делало только половину файла - это имеет смысл, потому что он просто присоединяется к каждой строке один раз.

4b9b3361

Ответ 1

А, я нашел ответ.

:1,$join

Работает как шарм.

EDIT: Как указано в комментарии:

:%join   -or-    :%j

... удаляет диапазон.

Ответ 2

Другой способ:

ggVGJ

"ggVG" визуально выбирает все строки, а "J" соединяет их.

Ответ 3

Вы можете сделать это с помощью трех нажатий клавиш, начиная с обычного режима:

:%j
  • : переходит в режим командной строки
  • % относится ко всем строкам в файле
  • j выполняет команду соединения

Теперь кажется, что это добавляет пробел между строками. Я не уверен, хотите ли вы этого.

Ответ 4

Вы можете сделать это тремя нажатиями клавиш:

:1,$j

не значим?

Ответ 5

Cryptic way:

[email protected]@q

(первые три q очищают регистр q, [email protected] записывает макрос в регистр q, который выполняет соединение, затем вызывает q, а последний @q запускает его.

Ответ 6

Im удивил, что никто даже не упомянул иначе:

:%s/\n/ /

Я также удивлен, что никто не указал, что диапазон 1,$ имеет сокращенное обозначение, написанное %.

(Это не делает то же самое, что и объединение строк, но в зависимости от обстоятельств, которые могут быть более подходящими.)

Ответ 7

Что делать, если я хочу присоединиться, но заменить конец строки на ";" ? Я думаю, один из способов - сначала заменить $ на; а затем присоединиться, но есть ли более простой способ?