我有一个如下所示的数据文件:
----------------------------
a b c d e .............
A B C D E .............
----------------------------
但我希望它采用以下格式:----------------------------
a A
b B
c C
d D
e E
...
...
----------------------------
在 Vim 或 Perl 中进行转换的最快方法是什么?
最佳答案
基本上 :.s/ /
SpaceCtrl+vEnter /g
Enter jma:.s/ /
Ctrl+vEnter /g
EnterCtrl+v 'axgg$p'adG
就可以了。 :)
好的,让我们分解一下:
:.s/ /
Ctrl+vEnter /g
Enter:在当前行 ( .
) 上,将 ( s
) 空格 ( / /
) 替换为一个空格,后跟一个回车 (SpaceCtrl+vEnter /
),在所有位置 ( g
)。光标现在应该在最后一个字母的行上(示例中的 e
)。 j
:向下一行(到 A B C D E
)。 ma
: 将标记 a
设置为当前位置...因为我们稍后要引用这个位置。 :.s/ /
Ctrl+vEnter /g
Enter:执行与上述相同的替换,但没有空格。光标现在应该在最后一个字母的行上(示例中的 E
)。 'a
:使用块选择从当前光标位置 (E
) 中选择以标记 a
(我们在上面的第 3 步中设置)。 x
:剪切选择(进入 "
寄存器)。 gg
: 将光标移动到第一行。 $
: 将光标移动到行尾。 p
: 在光标位置后粘贴之前剪切的文本。 'a
:将光标移动到 a
标记(在步骤 3 中设置)。 dG
:删除从光标位置到文件末尾的所有内容(底部留下的空行)。 附言我希望了解“内置”解决方案,但直到那个时候......
关于perl - 如何在 Vim 中有效地将行转换为列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11548342/