在Vim中以Ex模式打开文件名

时间:2016-08-28 23:45:18

标签: vim

如果我在寄存器中有完整路径(例如@a="/dir/file.txt")并且我想在Ex模式下打开文件。

我尝试:e @a,但它不起作用。

我也尝试:e echo @a,但它也不起作用。

显然我可以在Ex模式下键入:e CTRL-R a,它可以正常工作。

但我想知道有没有办法在不使用CTRL-R的情况下在Ex模式下获取寄存器的内容。

1 个答案:

答案 0 :(得分:3)

:edit命令采用文件规范。某些特殊字符(例如%表示当前文件名; cp。:h cmdline-special),但@reg符号在此处不起作用。

Vim的评估规则与大多数编程语言不同。您需要使用:execute来评估变量(或表达式);否则,字面意思;即Vim使用变量名称本身作为参数。

所以,问题的解决方案是

:execute 'edit' @a

如果您不希望特殊字符应用于寄存器内容,则更强大(但更长)的方式

:execute 'edit' fnameescape(@a)