如何使用vim打开以加号开头的文件(例如+foo.out)?

Joh*_*ohn 7 bash vim command-line

在我的文件系统中,我有一些以加号开头的文件。当我尝试用 vim 打开它们时,会抛出错误。

例如,当输入...

vim +foo.out
Run Code Online (Sandbox Code Playgroud)

我收到以下错误...

Error detected while processing command line:
E492: Not an editor command: foo.out
Run Code Online (Sandbox Code Playgroud)

我可以看到 vim 认为既然有一个加号,我必须尝试运行某种命令,但因为它后面跟着一个文件名,所以它不知道该怎么做。关于如何解决这个问题并打开/编辑文件有什么建议吗?

Kam*_*ski 7

是的,vim不解释+foo.out为文件名。至少有两种解决方案:

  1. 使参数看起来像绝对路径或相对路径,因此它不以+or开头-。在这种情况下

    vim ./+foo.out
    
    Run Code Online (Sandbox Code Playgroud)

    一般来说,当参数是文件名时这很有用。如果不是(例如grep -string-to-find)那么您需要使用另一种方法。

  2. 通知工具何时应该停止解析选项。一种常见的方法是使用双破折号。在这种情况下,它将是

    vim -- +foo.out
    
    Run Code Online (Sandbox Code Playgroud)

    一般来说,当工具支持 的这种含义时,这很有用--。Vim 可以,很多工具也可以(注意:支持是POSIX 指南--之一);但有些则不然。

如果每种方法都可以使用,那么同时使用它们有点过度,但绝不是错误:

vim -- ./+foo.out
Run Code Online (Sandbox Code Playgroud)