命令J
加入行。
命令gJ
连接删除空格的行
是否还有一个命令来连接线在线之间添加分隔符?
示例:
输入:
text
other text
more text
text
我想做什么:
- 选择这4行
- 如果在开始时有空格和/或EOL将它们移除
- 加入行添加分隔符' //'他们之间
输出:
text//other text//more text//text
答案 0 :(得分:5)
您可以使用:substitute
,匹配\n
:
:%s#\s*\n\s*#//#g
但是,这也会在最后添加分隔符(因为范围中的最后一行也有换行符)。您可以手动删除它,或者指定c
标志并在最后一个之前退出替换,或者将范围缩小1而将:join
改为最后一个:
:1,$-1s#\s*\n\s*#//#g|join
答案 1 :(得分:3)
我写了一个插件" 加入",可以做你想做的事情,等等。
https://github.com/sk1418/Join
除了内置:join
命令提供的所有功能外,加入可以:
Join lines with separator (string)
Join lines with or without trimming the leading/trailing whitespaces
Join lines with negative count (backwards join)
Join lines in reverse
Join lines and keep joined lines (without removing joined lines)
Join lines with any combinations of above options
查看主页以获取详细信息和示例/屏幕截图。
答案 2 :(得分:1)
有几种方法可以做到,但我建议尽可能采用最简单的方法 - 录制宏或执行多步命令,例如:
附加到排除最后一行的所有行
:1,$-1s#$#//#
):1,$-1norm A//
)然后使用视觉选择(vGgJ
)或任何其他方法加入。
除非您经常执行此操作,否则您很可能会忘记配置中的任何复杂命令或专用插件的存在,因此我建议使用通用的常用子步骤。
答案 3 :(得分:1)
另一种替代,为了多样性:
:%s:\n\ze.://
答案 4 :(得分:1)
每行将列出50个以空格分隔的项目:
seq 0 70 | xargs -L 50 | sed 's/ /,/g'
输出:
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49
50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70