2012-01-06 34 views
3

我想創建一個Vim函數來爲所有選定的行添加一些文本(比使用C-V I等更快)。創建一個Vim函數作爲所有行的前綴

我在腳本沒有經驗,發現這個偉大的文檔:http://www.ibm.com/developerworks/linux/library/l-vim-script-1/index.html這個問題:How can I prepend text in the middle of the line to multiple lines in Vim?

我想我會用input獲得文字前綴,然後將使用:'<,'>s/^/prefix_text/做實際的前綴,但我不知道如何提供prefix_text作爲替代表達式中的變量。

我想這很幼稚的解決方案(其中,顯然,不能因爲其附加input("Enter prefix text: ")只對當前行):

感謝您的幫助!

+0

呃,現在太累了,現在不能提供一個可行的解決方案,但讀了「執行」和「正常」。然後嘗試使用C-v I複製通常在正常模式下執行的操作。 – Rook 2012-01-07 01:25:01

+3

爲什麼不使用':'<,'> s/^/prefix /'而不使用中間命令? – 2012-01-07 03:09:35

+0

因爲我一直在使用它! – charlax 2012-01-07 18:30:49

回答

5

下面的Vim腳本實現了跟在 問題中的描述之後的命令。

command! -range -bar Prepend <line1>,<line2>call PrefixLines() 
function! PrefixLines() range 
    call inputsave() 
    let t = input('Prefix: ') 
    call inputrestore() 
    exe a:firstline.','.a:lastline 's/^/\=t' 
endfunction 
+0

謝謝!我加了'-range =%',這樣默認範圍就是整個文件。 – charlax 2012-01-07 19:53:41

相關問題