如何在 Vim 中将多行合并为一行?

例如,我想合并这样的文本:

CATEGORIES = ['Books',
'Business',
'Education',
'Entertainment',
'Finance',
'Games',
'Healthcare & Fitness',
'Lifestyle',
'Medical',
'Music',
'Navigation',
'News',
'Photography',
'Productivity',
'Reference',
'Social Networking',
'Sports',
'Travel',
'Utilities',
'Weather',
'All',  ]

进入

CATEGORIES = ['Books', 'Business', 'Education', 'Entertainment', 'Finance', 'Games', 'Healthcare & Fitness', 'Lifestyle', 'Medical', 'Music', 'Navigation', 'News', 'Photography', 'Productivity', 'Reference', 'Social Networking', 'Sports', 'Travel', 'Utilities', 'Weather', 'All', ]
79610 次浏览

使用 J(大写)键。它将为您连接行

有关更多联接选项,请检查 这个线程,并查看帮助页面。

在命令模式下:

[range]j[lines]

例如: 这里你想要做整个缓冲区:

%j

如果只想从当前光标位置执行10行操作:

j10

如果不想用空格替换新行,请在 j之后使用 !

%j!
j!10

至于那些超级奢侈品:

5j20

它会到第5行,然后加入接下来的20行。

对于这个特定的示例,以下命令将起作用:

:1, 21 j

或者

:%s/\n/ /g

最直观的方法是使用 Vim 视觉线模式,Shift + v。您所要做的就是选择要合并到一行的内容,然后按 Shift + j

或者加入从开始方括号到结束方括号的所有内容(假设文件中有很多这样的内容) ,并保留其他行的完整性,

:g/\[/,/\]/j

简单快捷。

:g/\[/,/\]/j

或者

/^CATEGORIES


:v//-1j

如果你有:

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


:g/edit/,/next/j