在vim中将多条线拼合为一条线,线之间可以使用分隔符,也可以不使用分隔符

tquggr8v  于 2022-11-24  发布在  其他
关注(0)|答案(3)|浏览(171)

我把这个贴在Vim上:

"recreation_ground"
"retail"
"farmyard"
"nature_reserve"
"scrub"
"park"
...

如果我选择这些行作为块,我可以使用什么命令:
1.为了将其内容“平坦化”到单个行,
"recreation_ground""retail""farmyard""nature_reserve""scrub""park"
1.并且(这将是完美的),在它们之间添加分隔符?"recreation_ground","retail","farmyard","nature_reserve","scrub","park"

ibrsph3r

ibrsph3r1#

您可以使用区块式视觉化模式来达成这些目的。
首先在每行末尾添加",“:

<C-v>G$A,<ESC>

然后将这些行连接起来,不留空格:

vGgJ

查看帮助文件以了解更多信息

:h visual-block
:h gJ
ogsagwnx

ogsagwnx2#

Max Shen的解决方案似乎是最好的一个,但有很多方法可以剥猫的皮。
您还可以使用:norm命令添加逗号,然后使用J将所有内容拼合。
首先,使用以下选项选择所有内容:

gg #(go to the top)
v #(visual mode entire line)
GG #(bottom of file)

运行norm命令:

:

'<,'>应立即插入,您可以键入norm,然后按下将在每行上执行的组合键,在本例中为A,,然后为<Enter>以进行确认。
最后,您可以执行以下操作:

V
gg
J #(flatten/join selected section)
vojdkbi0

vojdkbi03#

剥猫皮的方法真多。
使用:help :s

:'<,'>s/\n

对于第一个问题,以及:

:'<,'>s/\n/,
$x

第二个。
注意:有一个更“正确”的方法来解决问题#2,没有额外的$x,但它远没有那么直观,所以YMMV:

:'<,'>s/\n"/,"

相关问题