将行转换为VIM中的列

sto*_*ird 4 vim perl

我有一个如下的数据文件:

----------------------------
a b c d e .............
A B C D E .............
----------------------------
Run Code Online (Sandbox Code Playgroud)

但我希望它采用以下格式

----------------------------
a A
b B
c C
d D
e E
...
...
----------------------------
Run Code Online (Sandbox Code Playgroud)

在VIM或Perl中进行转换的最快方法是什么?谢谢.

Wal*_*ter 5

基本上:.s/ /SpaceCtrl+vEnter/gEnterjma:.s/ /Ctrl+vEnter/gEnterCtrl+v'axgg$p'adG会做到这一点.:)

好吧,让我们打破它:

  1. :.s/ /Ctrl+vEnter/gEnter:在当前行()上,在所有位置().中用s空格替换()空格(/ /),后跟一个回车符SpaceCtrl+vEnter/(g).光标现在应该在最后一个字母的行上(e在示例中).
  2. j:向下一行(至A B C D E).
  3. ma:将标记设置a为当前位置...因为我们想稍后参考此位置.
  4. :.s/ /Ctrl+vEnter/gEnter:做同样的替换,但没有Space.光标现在应该在最后一个字母的行上(E在示例中).
  5. Ctrl+v'a:使用块选择从当前光标位置(E)中选择要标记a(我们在上面的步骤3中设置).
  6. x:剪切选择(进入"寄存器).
  7. gg:将光标移动到第一行.
  8. $:将光标移动到行尾.
  9. p:在光标位置后粘贴先前剪切的文本.
  10. 'a:将光标移动到a标记(在步骤3中设置).
  11. dG:删除从光标位置到文件末尾的所有内容(底部留下的空行).

PS我希望了解一个"内置"解决方案,但直到这个时候......