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

时间:2011-07-05 02:26:29

标签: vim

例如:

我想合并这样的文字

  

CATEGORIES = ['Books',
          '商务',
          '教育',
          '娱乐',
          '财经',
          '游戏',
          '医疗保健&健身,
          '生活方式',
          '医疗',
          '音乐',
          '导航',
          '新闻',
          '摄影',
          '生产力',
          '参考',
          '社交网络',
          '体育',
          '旅行',
          '公用事业',
          '天气',
          '全部',]

  

CATEGORIES = ['Books','Business','Education','Entertainment','Finance','Games','Healthcare&健身','生活方式','医疗','音乐','导航','新闻','摄影','生产力','参考','社交网络','体育','旅行','公用事业','天气','全部',]

6 个答案:

答案 0 :(得分:95)

在命令模式下:

[range]j[lines]

EG:在这里你要做整个缓冲区:

%j

如果你只想从当前光标位置做10行:

j10

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

之后
%j!
j!10

并且为了超越:

5j20

将转到第5行,并加入接下来的20行。

答案 1 :(得分:27)

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

答案 2 :(得分:9)

使用 J (大写)键。它会加入你的行

检查this个帖子以获取更多加入选项,并查看帮助页面。

答案 3 :(得分:6)

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

:1, 21 j

:%s/\n/ /g

答案 4 :(得分:2)

或者加入所有内容,从打开方括号到关闭方括号(假设你的文件中有很多这些)并保留其他线条

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

快速而简单。

答案 5 :(得分:2)

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

/^CATEGORIES

:v//-1j

如果你有:

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

:g/edit/,/next/j