Как объединить несколько строк в одну строку в VIM?


например:

Я хочу объединить такой текст

категории = ['Книги',
"Бизнес",
"Образование",
"Развлечения",
"Финансы",
"Игры",
"Здравоохранение И Фитнес",
"Образ жизни",
"Медицинский",
"Музыка",
"Навигация",
"Новости",
"Фотография",
"Производительность",
"Ссылка",
"Социальные Сети",
"Спорт",
"Путешествие",
"Коммунальные услуги",
"Погода",
"Все",]

на

категории = ['книги', 'Бизнес', 'образование', 'развлечения', 'финансы', 'игры', 'здравоохранение & фитнес', 'образ жизни', 'медицина', 'музыка', 'навигация', 'Новости', "Фотография", "Производительность", "Ссылка", "Социальные Сети", "Спорт", "Путешествия", "Коммунальные Услуги", "Погода", "Все",]

6 53
vim

6 ответов:

в режиме командной строки:

[range]j[lines]

например: здесь вы хотите сделать весь буфер:

%j

если вы просто хотели сделать 10 строк от текущей позиции курсора:

j10

если вы не хотите, чтобы заменить новой строки с пробелами использовать ! после j.

%j!
j!10

и для uberfancy:

5j20

перейдет к строке 5 и присоединится к следующим 20 строкам.

наиболее интуитивным подходом было бы использовать режим визуальной линии vim shift + v. Все, что вам нужно сделать, это выбрать содержимое, которое вы хотите объединить в одну строку, а затем нажмите shift + j.

используйте J (верхний регистр) ярлык. Он присоединится к линиям для вас

проверьте этот поток для получения дополнительных параметров соединения и см. страницу справки:

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

для этого конкретного примера будут работать следующие команды:

:1, 21 j

или

:%s/\n/ /g

или объединить все от открытия квадратной скобки до закрытия квадратной скобки (при условии, что у вас их много в вашем файле) и оставить другие строки нетронутыми

:g/[/,/] / j

быстро и просто.

:g/[/,/] / j

или

категории/^

:v/ / -1j

и если у вас есть:

edit "Komputer" 
    ala 
    ala 
next 
edit "FortiGate" 
    ala 
    ala 
next

:g / edit/, / next / j