vi编辑器中将数字列转换为行的命令是什么?

时间:2013-04-25 22:35:26

标签: vim

这是我正在处理的问题:

$cat k    
23
22
35
24
42
:
:
36

我有这样的文件,我想像这样使用vim转换它。

22,23,35,24,42,8,......,36 

请帮助

2 个答案:

答案 0 :(得分:6)

选项1:

你可以执行:

:%s/\n/,/

这会在行尾留下额外的逗号,,您可以$x删除它。

这将替换没有额外的结尾逗号:

:1,$-1s/\n/,/

选项2:

使用我的加入插件:http://www.vim.org/scripts/script.php?script_id=4516

用它你只需要:

:%J ','

选项3(awk)

如果你也接受了awk,你不需要自己处理逗号,jst让awk自动添加它们。它可以很简单:

awk -F"\n" '$1=$1' RS="" OFS="," file

答案 1 :(得分:0)

也许这对您的用例来说有点矫枉过正,但 https://github.com/salsifis/vim-transpose/ 插件也可以做到这一点。此外,它将列s(数字)转换为行s

安装插件后,您可以通过以下方式实现:

let g:transpose_csv_default_separator = ','
TransposeCSV

它还会转化

23,14
22,64
35,12
24,43
42,65
:,:
:,:
36,19

进入

23,22,35,24,42,:,:,36
14,64,12,43,65,:,:,19