2016-01-07 32 views
2

考慮下面的目錄樹:如何讓Vim在通過命令行/ shell打開文件時忽略文件擴展名?

root/include/file.hpp 
root/source/file.cpp 
root/images/file.png 

命令行是目錄root內。

vimrc文件中,有set wildignore=*.png

如果在文件夾root中打開Vim並運行:next */file.*,則只會打開file.hppfile.cpp

但是,如果從命令行啓動Vim,並且它將打開全部三個文件。

所以,當給它一個文件名時,它首先加載文件,然後vimrc?有沒有辦法在通過命令行打開Vim文件時忽略擴展名?或者讓Vim首先加載vimrc

回答

3

在第一種情況下,水珠擴張是由Vim中完成的,因此服從你vimrc規則。

在第二種情況下,glob擴展是由shell完成的,沒有理由期望它遵守vimrc中的規則。

你可以做一些類似於$ vim -c "next */file.*",這實際上打開Vim沒有文件名,並執行next */file.*

或者您可以直接在您的shell中排除該模式。假設你有extglob集,這可以用bash與$ vim !(file.png)完成。

+0

哦,這就解釋了它。謝謝! – Tarc

1

在Vim中做:next */file.*時,vim通過wildignore擴展通配符和過濾器。當從shell中執行vim */file.*時,shell會擴展通配符,並將所有三個文件傳遞給Vim。

根據您的外殼,這將可能代替工作:

vim +"args */file.*" 
相關問題