0

こんにちは、選択したテキストを変数に入れてから、実行したい文字列に追加しようとしています。使いたいリストはこちら

 SHOW CREATE PROCEDURE name\G
 SHOW CREATE PROCEDURE add_contact_us\G
 SHOW CREATE PROCEDURE add_customer\G
 SHOW CREATE PROCEDURE add_order\G
 SHOW CREATE PROCEDURE add_to_cart\G
 SHOW CREATE PROCEDURE add_to_wish_list\G
 SHOW CREATE PROCEDURE add_transaction\G
 SHOW CREATE PROCEDURE clear_cart\G
 SHOW CREATE PROCEDURE get_order_contents\G
 SHOW CREATE PROCEDURE get_shopping_cart_contents\G
 SHOW CREATE PROCEDURE get_wish_list_contents\G
 SHOW CREATE PROCEDURE receipt_retrieve\G
 SHOW CREATE PROCEDURE remove_from_cart\G
 SHOW CREATE PROCEDURE remove_from_wish_list\G
 SHOW CREATE PROCEDURE select_categories\G
 SHOW CREATE PROCEDURE select_products\G
 SHOW CREATE PROCEDURE select_sale_items\G
 SHOW CREATE PROCEDURE update_cart\G
 SHOW CREATE PROCEDURE update_wish_list\G

これらの行を作成する関数は次のとおりです

function Myproc()
r !mysql -uroot -ppass sas -e 'SELECT name FROM mysql.proc;'
let q = 'mysql -uroot -ppass sas -e'
echom q
normal! gg /name
normal! ndd
%normal! I SHOW CREATE PROCEDURE 
normal! ggdd0 
%normal A\G
normal! gg0
//here where im having porblems.. i think
normal! <shift>.Vy\<C-r>".q 

endfunction

私が望むのは、クエリ文字列を作成して出力することです。これにより、文字列が次のようになるはずのストアドプロシージャを表示および編集できます

!mysql -uroot -ppass sas -e SHOW CREATE PROCEDURE update_wish_list\G

正しい軌道に乗っている i の新しい vim

4

1 に答える 1

1

このスクリプトを書くためのより良い方法は次のとおりです。

" get proc names from mysql and split them into an list
let output = system("mysql -uroot -ppass sas -e 'SELECT name FROM mysql.proc'")
let proc_list = split(output, '\n')

"set cursor to first line
call cursor('1', '1')

" output as you like
for proc in proc_list
    put ='SHOW CREATE PROCEDURE ' . proc .'\G'
endfor

もちろん、関数としてラップすることもできます。

于 2013-07-04T07:07:33.297 に答える