使用vimscript可以很容易地确定是否使用argc()为vim指定了文件名。有没有办法确定是否给了-标志以指定给vim提供了管道输入?它不将管道输入视为文件名,并且argc()为空。

编辑

感谢以下精彩的答案,如果没有文件名且未使用stndin,我可以打开NerdTree。

let wmuse_nt = 0
autocmd StdinReadPost * let wmuse_nt = 1
autocmd vimenter * if !argc() && wmuse_nt == 0 | NERDTree | endif

最佳答案

您可以使用autocmd在通过StdinReadPreStdinReadPost事件从stdin读取vim之前或之后运行某些内容。帮助复制如下。

StdinReadPost
从stdin读入缓冲区后,
在执行模式线之前。仅用于
当Vim被使用时使用“-”参数
开始-。
标准读
StdinReadPre从stdin读入缓冲区之前。
仅在以下情况下使用“-”参数时使用
Vim已启动-。

09-19 10:27