在Vim的Ex模式下,打开注册表中的文件名

4
如果我在寄存器中有一个完整的路径(例如@a="/dir/file.txt"),并且我想在Ex模式下打开该文件。
我尝试使用:e @a,但它不起作用。
我也尝试过:e echo @a,但它也不起作用。
显然,我可以在Ex模式下输入:e CTRL-R a,它可以工作。
但我想知道是否有一种方法可以在Ex模式下获取寄存器的内容而不使用CTRL-R。

5
这句话是Vim编辑器的命令,意思是执行以下操作:打开名为@a的寄存器中保存的文件并在当前窗口中进行编辑。 - FDinoff
2
FDinoff:请将其发布为答案。 - SibiCoder
1个回答

5
:edit命令需要指定一个文件。有一些特殊字符(例如当前文件名的%;参见::h cmdline-special),但这里不支持@reg符号表示法。
Vim的计算规则与大多数编程语言不同。您需要使用:execute来评估变量(或表达式);否则,它会被视为文字字面量;即Vim使用变量名称本身作为参数。
因此,解决您的问题的方法是
:execute 'edit' @a

如果您不希望特殊字符应用于注册内容,则更稳健(但更长)的方法是:
:execute 'edit' fnameescape(@a)

你使用fnameescape()解决了寄存器中特殊字符的问题。太棒了! - 1234

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接