如果我在寄存器中有完整路径(例如@a="/dir/file.txt"
)并且我想在Ex模式下打开文件。
我尝试:e @a
,但它不起作用。
我也尝试:e echo @a
,但它也不起作用。
显然我可以在Ex模式下键入:e CTRL-R a
,它可以正常工作。
但我想知道有没有办法在不使用CTRL-R的情况下在Ex模式下获取寄存器的内容。
答案 0 :(得分:3)
:edit
命令采用文件规范。某些特殊字符(例如%
表示当前文件名; cp。:h cmdline-special
),但@reg
符号在此处不起作用。
Vim的评估规则与大多数编程语言不同。您需要使用:execute
来评估变量(或表达式);否则,字面意思;即Vim使用变量名称本身作为参数。
所以,问题的解决方案是
:execute 'edit' @a
如果您不希望特殊字符应用于寄存器内容,则更强大(但更长)的方式
:execute 'edit' fnameescape(@a)