2010-01-25 51 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