[英]How to split text into multiple lines based on a pattern using 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;
...
你會如何自動化這個操作?
一些說明:
:'<,'>:norm ^3f r^M
***, *** 序列說明:
- norm
為在正常模式下執行以下命令
- ^
用於將光標移動到行的開頭
- 3f<space>
用於將光標移動到行中的第3個空格
- 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個擊鍵:
/ ; ENTERšš
這對於快速格式化XML,HTML等非常方便...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.