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

如何在Vim中将多行合并为一行?,vim,Vim,例如,我想合并这样的文本: 类别=[“书籍”, “生意”, "教育",, "娱乐",, "金融",, “游戏”, “医疗保健与健身”, “生活方式”, "医疗",, "音乐",, “导航”, "新闻",, "摄影",, "生产力",, “参考”, “社交网络”, "体育",, “旅行”, "公用事业",, “天气”, “全部”,] 进入 类别=[‘书籍’、‘商业’、‘教育’、‘娱乐’、‘金融’、‘游戏’、‘医疗保健与健身’、‘生活方式’、‘医疗’、‘音乐’、‘导航’、‘新闻’、‘摄影’、‘生产力

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

类别=[“书籍”, “生意”, "教育",, "娱乐",, "金融",, “游戏”, “医疗保健与健身”, “生活方式”, "医疗",, "音乐",, “导航”, "新闻",, "摄影",, "生产力",, “参考”, “社交网络”, "体育",, “旅行”, "公用事业",, “天气”, “全部”,]

进入

类别=[‘书籍’、‘商业’、‘教育’、‘娱乐’、‘金融’、‘游戏’、‘医疗保健与健身’、‘生活方式’、‘医疗’、‘音乐’、‘导航’、‘新闻’、‘摄影’、‘生产力’、‘参考’、‘社交网络’、‘体育’、‘旅游’、‘公用事业’、‘天气’、‘所有’、]

使用J(大写)键。它会帮你排队的

检查线程以了解更多连接选项,并查看帮助页。

在命令模式下:

[range]j[lines]
例如:在这里,您要对整个缓冲区执行以下操作:

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

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

对于超级用户来说:

5j20

它将转到第5行,并连接接下来的20行。

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

:1, 21 j


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

或将从开始方括号到结束方括号(假设文件中有很多这样的内容)的所有内容合并在一起,并保留其他行不变

:g/\[/,/\]/j
它快速而简单

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

如果你有:

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

:g/edit/,/next/j

为什么不简单地执行一个视觉选择,然后按
J
?vipJ在这里会更有效。或者,如果在“[”前面的第一行,v%J也可以。或者,在文本块的任何地方,va]J这应该是大写的
J
,而不是小写的
J
。我完全同意。这就是我使用它的方式。在我的mac电脑上,似乎我需要使用RightShift才能工作,LeftShift选择下面的下一行并将其添加到视觉选择中。
:g/\[/,/\]/j
/^CATEGORIES

:v//-1j
edit "Komputer" 
    ala 
    ala 
next 
edit "FortiGate" 
    ala 
    ala 
next

:g/edit/,/next/j