vim:如果文件名在寄存器或变量中,如何在文件上运行外部应用程序

vim:如果文件名在寄存器或变量中,如何在文件上运行外部应用程序

如果我发出 Ex 命令

:!xv file.png  

一切正常,xv 启动并显示文件。

但是如果 file.png 位于寄存器或变量中(这是必要的,因为我希望在脚本中执行此操作),则命令会失败,因为 vim 不会用其名称替换寄存器或变量的内容。然后 xv 会给出文件未找到错误,例如“无法打开 /file/path/@m”!
命令的运动版本(例如 :W!xv)也会失败,因为文本通过管道传输到 xv,而不是作为位置参数接收

是否可以将变量或寄存器的内容传递给外部命令?

答案1

exec命令执行寄存器替换,并从中构建命令行:

exec "!xv" @m

相关内容