如何在vi中编辑文件内容?

sta*_*any 2 linux vi

我有一个包含以下内容的文本文件(实际文件包含数千行)

abcd
xyas
sasss
jddks
asa
sasa
lkkkss
asasd
Run Code Online (Sandbox Code Playgroud)

我想要以下格式的输出。

abcd xyas sasss jddks
asa sasa lkkkss asasd
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Jos*_* R. 10

如果您只想将每 4 行合并为一行,则可以使用递归宏来完成:

ggqaqqa4Jj@aq@a
Run Code Online (Sandbox Code Playgroud)

解释:

  • gg 转到文件开头
  • qaq 清除寄存器中任何先前存储的宏 a
  • qa 开始在寄存器中录制宏 a
  • 4J 将 4 行合二为一
  • j 下一行
  • @a让寄存器中的宏a调用自身
  • q 停止录音
  • @a调用寄存器a中的宏,它将继续处理文件,直到完成。

Perl 中的替代方案

perl -ni -e 'chomp;print $_, $.%4? " ":"\n"' your_file
Run Code Online (Sandbox Code Playgroud)

参考