考虑以下目录树:
root/include/file.hpp
root/source/file.cpp
root/images/file.png
命令行位于目录root
内。
在vimrc
文件中,有set wildignore=*.png
。
如果您在root
文件夹中打开Vim并运行:next */file.*
,则只会打开file.hpp
和file.cpp
。
但是,如果从命令行使用vim */file.*
启动Vim,则会打开所有三个文件。
所以,当它输入文件名时,首先加载文件,然后加载vimrc
?有没有办法在通过命令行使用Vim打开文件时忽略扩展?或者先让Vim加载vimrc
?
答案 0 :(得分:3)
在第一个场景中,全局扩展由Vim完成,因此遵守vimrc
中的规则。
在第二种情况下,全局扩展由您的shell完成,并且没有理由期望它遵守vimrc
中的规则。
您可以执行$ vim -c "next */file.*"
之类的操作,它基本上会打开没有文件名的Vim并执行next */file.*
。
或者您可以直接在shell中排除模式。假设您设置了extglob
,可以使用$ vim !(file.png)
进行bash。
答案 1 :(得分:1)
当从Vim中执行:next */file.*
时,vim会扩展通配符并通过wildignore过滤。从shell执行vim */file.*
时,shell会扩展通配符,并将所有三个文件传递给Vim。
根据你的shell,这可能会改为:
vim +"args */file.*"