“粘贴在”;vimL正常执行“;位于寄存器内存中的字符串

“粘贴在”;vimL正常执行“;位于寄存器内存中的字符串,vim,Vim,如何执行vimL函数中包含寄存器数据的命令 比如(作为一个示例测试用例),我想打开一个方向字符串位于寄存器z中的文件。在正常执行过程中,我可以按以下键: :e <c-r>z<CR> # CR is "carret return", <c-r>z is "paste registry z" :e z#CR是“carret return”,z是“粘贴注册表z” 在vimL中,它变得复杂。我尝试了以下选项,但不起作用 fun! OpenFileInBrack

如何执行vimL函数中包含寄存器数据的命令

比如(作为一个示例测试用例),我想打开一个方向字符串位于寄存器z中的文件。在正常执行过程中,我可以按以下键:

:e <c-r>z<CR>   # CR is "carret return", <c-r>z is "paste registry z"
:e z#CR是“carret return”,z是“粘贴注册表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
有趣!OpenFileInBrackets()
exe'正常!:e\z.“\”
exe'正常!:e z'“\”
诺姆EZ
结束
有哪些选择


谢谢大家!

将我的评论移至答案


我的建议是在vim脚本中使用函数,而不是它们的普通模式等价物。在这种情况下,要从寄存器中获取值,请使用
getreg()

下面是一个简单的例子:

function OpenRegZ()
    let filename = getreg("z")
    execute "edit " . fnameescape(filename)
endfunction
可用功能列表可在
:help function list
中找到


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

我的建议是在vim脚本中使用函数,而不是使用它们的正常模式等效函数。在这种情况下,要从寄存器中获取值,请使用
getreg()
。可用功能列表可在
:help function list
中找到。我喜欢这个想法;我不知道这样的功能。但是,我仍然无法打开示例中的文件。我不知道如何组合新工具。。。我肯定不能流利地理解这一点,因此如果我理解正确,这意味着使用
execute
类型语句,而不是
norm
。我说的对吗?如果要在普通命令中使用变量,则需要执行普通命令。看见