How to split text into multiple lines based on a pattern using Vim?
假设您有以下文本:
1 2 3 4 | name1 ="John"; age1 = 41; name2 ="Jane"; age2 = 32; name3 ="Mike"; age3 = 36; ... |
你想把每一行分成两行,得到这样的结果:
1 2 3 4 5 6 7 | name1 ="John"; age1 = 41; name2 ="Jane"; age2 = 32; name3 ="Mike"; age3 = 36; ... |
您将如何自动执行此操作?
一些注释:
***序列说明:
-用于在正常模式下执行以下命令的
要对整个文件进行操作,请使用以下命令:
1 2 | :%s/; /; / |
要仅对所选文本进行操作,请使用以下命令:
1 2 | :'<,'>s/; / / |
英语翻译:
"用分号和换行符替换所有出现的分号和空格。"
说明:
1 2 3 4 5 6 | % - operate on the entire file s - substitute / - symbol that separates search/replace terms ; - the character you're searching for (notice I added a space) ; - the replacement text (semi-colon followed by newline) |
这几乎和它在vi中的替换一样基本。
对于更多的极客:
在我的
1 2 3 4 5 | " " add a newline after each occurrence of the last search term " nnoremap SS :%s//& /<CR> |
此命令在最后一个搜索模式的第一次出现时拆分文件的每一行。
因此,对于您的用例,您可以这样做:
文件的每一行将在第一个
为了澄清,您将使用以下5个按键:
/ ; enter s s
这对于快速格式化XML、HTML等非常方便。