我想寫一個vim腳本獲取兩個命令之間的字符串。例如: \string{new strings}
,我想獲得新的字符串,如果它包含空行或空間如何獲得兩個命令之間的字符串在vim
:%s/\\string{[^}]*\n*[^}]*}/new/gec
我想寫一個vim腳本獲取兩個命令之間的字符串。例如: \string{new strings}
,我想獲得新的字符串,如果它包含空行或空間如何獲得兩個命令之間的字符串在vim
:%s/\\string{[^}]*\n*[^}]*}/new/gec
您的要求就是不說清楚,但如果你想
獲得「新字符串」,如果它包含空行或空間
你也評論說:
選擇\字符串{} 即使有任何空間或線的大括號裏面的內容
這行做它,它是一個搜索命令,不:s
/\\string{\zs\_[^}]*
如果你想要做\string{
和}
之間的一些內容替換,你可以使用模式:
%s/\\string{\zs\_[^}]*\ze}/whatever/g
需要注意的是,你也可以寫s/\\string{\zs\_[^}]*/whatever/g
,該\ze}
將確保右括號必須在那裏。不知道這是否需要。
對於\_[]
細節,做一個:h \_[
您的搜索命令也匹配「\ string {string}」,其中不包含空格或換行符。 –
@MichaelFoukarakis所以要求是**只有在**? – Kent
這不適合我回答。 –
使用此代碼
%s/\\string{[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]*\n*[^}]
*}/new/gec
不是很清楚你想要什麼。你能舉出一些你想在輸入中匹配的例子嗎? – Atri
選擇\ string {}的大括號內的內容,即使有任何 空間或行 –