将“ vimL正常执行”粘贴到位于寄存器存储器中的字符串

时间:2019-05-23 13:40:14

标签: vim

如何执行在vimL函数中涉及寄存器数据的命令?

说(作为示例测试用例),我想打开一个文件,其方向字符串在寄存器z中。在正常执行期间,我可以按以下键:

:e <c-r>z<CR>   # CR is "carret return", <c-r>z is "paste registry z"

在vimL中它变得复杂。我尝试了以下选项,但无法正常工作。

fun! OpenFileInBrackets()
    exe 'normal! :e \<c-r>z'."\<cr>"
    exe 'normal! :e <c-r>z'."\<cr>"
    norm! :e <c-r>z<CR>
endfun

有哪些选择?

谢谢!

1 个答案:

答案 0 :(得分:2)

将我的评论移至答案。

我的建议是在vim脚本内部使用函数,而不是在正常模式下使用的函数。在这种情况下,要从寄存器获取值,请使用getreg()

这是一个简单的例子:

function OpenRegZ()
    let filename = getreg("z")
    execute "edit " . fnameescape(filename)
endfunction

可以在:help function-list上找到可用功能的列表。

编辑:根据fnameescape()的建议添加了:help execute