我需要删除 2 种模式之间的所有内容,或者更确切地说,剪切它并放置该 ot 寄存器以供以后使用(将其放入不同的文件)
%s/V<se.{-}</sel//gc
但这只是删除(它不起作用,我想剪切它并把它注册(也许我需要一些脚本)
使用全局命令就可以了。
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.
不知道你想要的两种模式到底是什么,但试试这一行:
s/pattern1zs_.{-}zepattern2/=setreg('x',submatch(0))>-1:'':''/
- 这里的两种模式是
pattern1
和pattern2
- 两种模式之间的文本(可以是多行)将被空字符串替换,它们本身的两个模式不会被替换。
- "已删除"文本将保存在寄存器
x
假设您有一个与您想要"切割"的模式完全匹配的模式,只需使用普通 / 搜索搜索该模式即可。然后,您可以使用 gn
对象对搜索命中进行操作,以便以后粘贴,例如 dgn
。
如果您没有此模式,而是具有开始和结束正则表达式,则只需将光标放在"开始"模式的末尾(例如,带有/pattern/e
),然后删除,直到搜索命中结束模式,例如 d/pattern2
.