这样的一个操作在VI里该怎么实现

2013-12-21 13:30:20 +08:00
 mongodb
编辑一个文件

形如
BEGIN

keyqwertyuiopsdfghjkldfghjkfs
sdfghjkldfghjkdfghjkl;
dfghjkdfghjklfghjkl
sdfghjkl;asdfghjklasdfghjk
COMMIT
UPDATE `xxx` set xxxxx

BEGIN

keyqwertyuiopsdfghjkldfghjkfs
sdfghjkldfghjkdfghjkl;
dfghjkdfghjklfghjkl
sdfghjkl;asdfghjklasdfghjk
COMMIT
UPDATE `xxx` set xxxxx

BEGIN

keyqwertyuiopsdfghjkldfghjkfs
sdfghjkldfghjkdfghjkl;
dfghjkdfghjklfghjkl
sdfghjkl;asdfghjklasdfghjk
COMMIT
UPDATE `xxx` set xxxxx



我想删掉其中从BEGIN到COMMIT结束的这个区块
只保留下各种sql语句

一开始我想只grep出sql语句到另外的文件,但因为这些语句包含了值后太乱,跨行的,转折的,还有一些错误需要手工修正,只能反过来,把所有从BEGIN到COMMIT的区块都删除。但居然尝试了半天没弄起来,求高手给个例子示范。
3554 次点击
所在节点    Vim
6 条回复
lyoe
2013-12-21 13:34:25 +08:00
:%s/BEGIN\_.\+COMMIT//g
lyoe
2013-12-21 13:40:29 +08:00
%s/BEGIN\_[^\(BEGIN\)]\+COMMIT//g
xcatliu
2013-12-21 18:40:57 +08:00
用宏吧
q1/BEGIN<enter><shift-v>/COMMIT<enter>d<esc>q
1000q
xcatliu
2013-12-21 18:41:33 +08:00
1000@1
maga
2013-12-23 15:25:40 +08:00
:v/UPDATE/d
gongcheng
2013-12-23 18:41:02 +08:00
二楼是正解。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/94053

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX