如何将视觉选择从脚本而不是命令行/映射传递给函数。我想知道这样的事情是否可能?或者如果有一个函数可以得到一个范围?
我想要什么:
:call LowerToUpper('<,'>)
:call LowerToUpper(GetVisualRange())
不是这个
:call LowerToUpper(1,5)
command! -range Edit call LowerToUpper(<line1>,<line2>)
:'<,'>LowerToUpper
下面是函数示例:
function! LowerToUpper(first,last) abort
for lineno in range(a:first,a:last)
let line = getline(lineno)
let newLine= substitute(line, 'v(w)','U1','g')
call setline(lineno,newLine)
endfor
endfunction
解决方案可能是创建一个返回视觉选择GetVisualSelection((的函数。
:call LowerToUpper('<,'>(
你们非常非常接近。使用line()
获取标记行:
:call LowerToUpper(line("'<"), line("'>"))
您可以使用range
修饰符来获取函数。
function! LowerToUpper() abort range
for lineno in range(a:firstline, a:lastline)
let line = getline(lineno)
let newLine = substitute(line, 'v(w)','U1','g')
call setline(lineno, newLine)
endfor
endfunction
'<,'>call LowerToUpper()
这主要用作隐式传递line("'<")
和line("'>")
的快捷方式。参数名称a:firstline
和a:lastline
是固定的。