我有大量的文本格式如下:
123123|abcabc|text
text
text
123124|abcabc|text
textext
text
目标是通过以下方式排列文本:
123123|abcabc|texttexttext
123124|abcabc|texttext text
这样每个条目都放在它自己的行上,然后是一个回车符,将它与下一行分开。
我尝试过搜索|
符号之类的内容,然后我创建了一个宏来搜索每个第3个|
符号,转到上一个单词,然后插入一个回车符。
nnnbi<CR><Esc>
但我无法重复。我是一个非常新的用户,任何方向都会非常有用。
非常感谢!
答案 0 :(得分:3)
我认为这个命令可以帮到你:
g/|/j3
如果您不希望在加入后有空格,请添加“bang [!]”。
g/|/j!3
有关详细信息,请参阅:h :join
修改强>
那么这一行应该有效
:v/|/-1 j!
或其他选项也适用:
:v/|/normal! I^U
请注意^U
你应按 Ctrl-v Ctrl-u
答案 1 :(得分:0)
一种方法是使用:v
模式|
,它将为不包含管道的每一行执行下一个命令。该命令将X
删除光标位置之前的字符,并且因为光标始终位于第一行,它将删除将连接两行的上一个换行符,依此类推,直到结束:
:v/|/normal X
它产生:
123123|abcabc|texttexttext
123124|abcabc|texttextexttext