我需要删除2个模式之间的所有内容,或者更确切地说是将其删除并将其放在后面使用(将其放到不同的文件中)
%s/\V<se.\{-}<\/sel//gc
但这只是删除(并且它不起作用,我想要切割它并将其注册(可能我需要一些脚本)
答案 0 :(得分:2)
确切地知道你想要的两种模式,但试试这行:
s/pattern1\zs\_.\{-}\zepattern2/\=setreg('x',submatch(0))>-1:'':''/
pattern1
和pattern2
x
答案 1 :(得分:2)
使用全局命令可以正常工作。
let @a=''|g/startpattern/.+1,/stoppattern/-1 delete A
,其中
let @a='' - Clear the a register
g/startpattern/ - search for the start of the pattern
.+1,/stoppattern/-1 delete A - delete everything between start and stop and
append it to register a
适用于
startpattern
this goes to register A
so does this
stoppattern
但不适用于
startpattern this should go to register A stoppattern.
答案 2 :(得分:0)
假设您的模式与您想要的模式完全匹配&#34; cut&#34;,只需使用普通的 / 搜索搜索该模式。然后,您可以使用gn
对象对搜索匹配进行操作,以便日后粘贴,例如dgn
。
如果你没有这个模式,而是有一个开始和结束正则表达式,那么只需将光标放在&#34; start&#34;的末尾。模式(例如,使用/pattern/e
),然后删除直到搜索结束模式,例如d/pattern2
。