我有一个特定于文件类型的映射,用于在当前缓冲区中执行代码。
对于 .pl 文件:
:nnoremap <buffer> <leader>r :!echo "OUTPUT:"; perl %<cr>
对于 .py 文件:
:nnoremap <buffer> <leader>r :!echo "OUTPUT:"; python %<cr>
如您所见,{rhs} 仅在解释器名称上有所不同(“perl”、“python”等)。所以,我写了一个函数来生成它。
" Creates command-string to run code in buffer.
function! GenerateCmd(prg)
return ':!echo "OUTPUT:"; ' . a:prg . ' %<cr>'
endfunction
这就是我卡住的地方。如何将 {rhs} 设置为返回的字符串值GenerateCmd()
?
例如::nnoremap <buffer> <leader>r =GenerateCmd('perl')
不会创建与我上面为 Perl 手写的映射相同的映射。