创建一个Vim函数来为所有行添加前缀

时间:2012-01-06 20:10:48

标签: vim

我想创建一个Vim函数,为所有选定的行添加一些文本(比使用C-V I等更快。)。

我没有编写脚本的经验,并找到了这篇很棒的文档: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: ")附加到当前行):

" Prefix lines
command PrefixLines call <SID>PrefixLines()

function! <SID>PrefixLines()
    '<,'>substitute/^/input("Enter prefix text: ")/
endfunction

感谢您的帮助!

1 个答案:

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