如何根据使用Vim的模式将文本分成多行?
假设你有这样的文字:
name1 = "John"; age1 = 41;
name2 = "Jane"; age2 = 32;
name3 = "Mike"; age3 = 36;
...
并且你想将每行分成两行来给出如下结果:
name1 = "John";
age1 = 41;
name2 = "Jane";
age2 = 32;
name3 = "Mike";
age3 = 36;
...
你会如何自动执行此操作?
一些说明:
(1)选择virtual-vode中的文字,
(2)执行
:'<,'>:norm ^3f r^M
***, 但它不能正常工作; 它只分割一半线条,因为在每条线断开之后,下一条命令的重复将应用于其余的虚线,而不是下一条线!
***序列的解释:
- norm
为在正常模式下执行以下命令
- ^
将光标移动到行的开头
- 3f<space>
用于将光标移动到行中的第三个空格
- r^M
用新行替换该空格
要对整个文件进行操作,请使用以下命令:
:%s/; /;r/
要仅对选定文本进行操作,请使用以下命令:
:'<,'>s/; /r/
英文翻译:
“用分号替换每个出现的分号后跟一个换行符后跟一个换行符 。”
说明:
% - operate on the entire file
s - substitute
/ - symbol that separates search/replace terms
; - the character you're searching for (notice I added a space)
;r - the replacement text (semi-colon followed by newline)
这与Vi在替代方面基本相同。
对于更多的怪胎:
实际上,我在.vimrc
文件中映射了以下情况:
"
" add a newline after each occurrence of the last search term
"
nnoremap SS :%s//&r/<CR>
该命令在最后一次搜索模式发生时分割文件的每一行。
所以,对于你的用例,你可以这样做:
;
(你可能会也可能不想包括一个空间......由你决定) SS
您的文件的每一行都会在第一行被分割;
符号。
为了澄清,您将使用以下5个按键:
/; 输入SS
这对于快速格式化XML,HTML等非常方便。
链接地址: http://www.djcxy.com/p/49329.html上一篇: How to split text into multiple lines based on a pattern using Vim?
下一篇: In Vim how do I split a long string into multiple lines by a character?