我想创建一个Vim函数,用一些文本为所有选定的行加前缀(这比使用Ctrl-V1 我没有编写脚本的经验,发现了这篇很棒的文档和这个问题: 我想,我将使用 我尝试了这个非常天真的解决方案(显然,它不起作用,因为它只将 谢谢你的帮助!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
您可以使用Vim替换表达式允许替换字符串成为结果的功能计算Vimscript表达式。(参见:help :s=
和:help s/=
了解详细信息。)
在您的情况下,表达式可能简单到引用设置为所需前缀字符串的局部变量的值通过input()
:
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