将选定的文本放在变量中以添加到查询中

时间:2013-07-04 06:13:32

标签: vim

您好我正在尝试将所选文本放入变量中,然后将其添加到我想要执行的字符串中。 这是我想要使用的列表

 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

新的vim an i在正确的轨道上

1 个答案:

答案 0 :(得分: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

因为你也可以将它作为一个函数包装。