2010-01-25 52 views
1

我遇到了必须重新编写一行文本的情况。 (例如:
)1. insert into table_name(col_one,col_two)values(val_1,val_2);
2.插入table_name(col_one,col_two)值(val_3,val_4);
3.插入到table_name(col_one,col_two)值(val_5,val_6);
等等......(1000条记录)使用宏编辑文本

我的意思是,我只会输入第一个查询,然后使用文本编辑器编写一个宏来生成所需数量的查询。 希望你得到的图片。

请为此推荐更好的文本编辑器。因为我已经尝试过并且失败了Ultraedit/Textpad。也许我做错了什么,因为我勉强让Vim也这样做。

回答

1

对于给定的,其中只有数字变化的例子,这应该使用Zeus编辑器和宏脚本是可能的。例如,这个numbers脚本的作用非常类似。

为了达到所需的结果从上面走数字脚本,并进行一些小的改动,以创建一个奇数偶数脚本。

然后列标记奇数列的1000行并运行奇数脚本。然后列1000行的偶数列并运行偶数脚本。

0

选择是Vim或Emacs。例如。 Emacs提供宏和正则表达式,所以你应该能够做你想做的。虽然可能并不明显。

+0

之一来进行,我不是很舒服的VIM/Emacs的。你能给我一个链接吗? – user258321 2010-01-27 06:04:13

+0

@ user258321请参阅我的回答,了解如何使用emacs – 2011-09-16 18:57:29

0

我认为如果您使用shell脚本来生成文本而不是文本编辑器中的宏,问题可能会更容易解决。

0

编辑器可能是这里的错误工具 - 如果您想要生成所有这些插入语句,您最好使用perl或python等脚本语言编写小程序。

+0

专门执行此操作,这正是我现在使用Python所做的。但这是一个非常普遍的问题。必须有更快的方法。 – user258321 2010-01-27 06:02:20

0

几乎任何文本编辑器都会让你复制行并编辑它们,当然是vim。

解决此问题的正确方法是以编程方式执行此操作:创建生成所需文本文件的模板文件。 m4是一种广泛使用的宏语言,非常适合这项任务,因为您可以自由混合文本和宏。参看http://en.wikipedia.org/wiki/M4_(computer_language)

例如, (未经测试)

 
define(`txt`, "$1. insert into table_name (col_one, col_two) values (val_$2, val_$3);") 
forloop(`i',1,1000,txt(i,eval(2*i-1),eval(2*i))) 
0

我张贴这是因为OP问一个链接,如何能在Vim的或Emacs在评论

;; First set a special variable used for counting in macros to an initial value of 1 
C-x C-k C-c 1 

;;type your text but use <C-x C-k C-i> in place of the numbers 
;;<C-x C-k C-i> inserts the value of the counting var and automatically increments it by 1 
insert into table_name (col_one, col_two) values (val_<C-x C-k C-i>, val_<C-x C-k C-i>) 

;;repeat your macro 1000 times. 
M-1000 C-x C-e