vim:如何检测.vimrc中的标准输入?

vim:如何检测.vimrc中的标准输入?,vim,stdin,Vim,Stdin,如何在.vimrc中检测stdin输入 我的~/.vimrc中有以下命令: autocmd BufWinEnter * silent loadview 在光标位于最后一行位置时打开文件。但是,如果我在stdin上使用vim,我会收到以下错误消息: Error detected while processing BufWinEnter Autocommands for "*": E32: No file name Press ENTER or type command to

如何在
.vimrc
中检测stdin输入

我的
~/.vimrc
中有以下命令:

autocmd BufWinEnter * silent loadview
在光标位于最后一行位置时打开文件。但是,如果我在stdin上使用vim,我会收到以下错误消息:

Error detected while processing BufWinEnter Autocommands for "*":
E32: No file name
Press ENTER or type command to continue
在这种情况下,如何检测在
.vimrc
中的stdin上使用vim来抑制命令的执行


谢谢你的帮助

v:argv
是一个列表,以程序的完整路径开始,并包含每个参数(如果有)

如果您这样称呼Vim:

$ vim
$ vim foo.txt bar.json
$ echo 'foo bar baz' | vim -
:echo v:argv
输出如下内容:

['/path/to/vim']
['/path/to/vim', 'foo.txt', 'bar.json']
['/path/to/vim', '-']
如果您这样称呼Vim:

$ vim
$ vim foo.txt bar.json
$ echo 'foo bar baz' | vim -
:echo v:argv
输出如下内容:

['/path/to/vim']
['/path/to/vim', 'foo.txt', 'bar.json']
['/path/to/vim', '-']
如果您这样称呼Vim:

$ vim
$ vim foo.txt bar.json
$ echo 'foo bar baz' | vim -
:echo v:argv
输出如下内容:

['/path/to/vim']
['/path/to/vim', 'foo.txt', 'bar.json']
['/path/to/vim', '-']
因此,您可以根据
v:argv[1]
的内容来调整
:loadview
的执行。请注意,我们使用
get()
,因为索引
1
可能不存在:

autocmd BufWinEnter * if get(v:argv, 1, '') != '-' | silent loadview | endif
参考:

:help :get()
:help v:argv

v:argv
是一个列表,以程序的完整路径开始,并包含每个参数(如果有)

如果您这样称呼Vim:

$ vim
$ vim foo.txt bar.json
$ echo 'foo bar baz' | vim -
:echo v:argv
输出如下内容:

['/path/to/vim']
['/path/to/vim', 'foo.txt', 'bar.json']
['/path/to/vim', '-']
如果您这样称呼Vim:

$ vim
$ vim foo.txt bar.json
$ echo 'foo bar baz' | vim -
:echo v:argv
输出如下内容:

['/path/to/vim']
['/path/to/vim', 'foo.txt', 'bar.json']
['/path/to/vim', '-']
如果您这样称呼Vim:

$ vim
$ vim foo.txt bar.json
$ echo 'foo bar baz' | vim -
:echo v:argv
输出如下内容:

['/path/to/vim']
['/path/to/vim', 'foo.txt', 'bar.json']
['/path/to/vim', '-']
因此,您可以根据
v:argv[1]
的内容来调整
:loadview
的执行。请注意,我们使用
get()
,因为索引
1
可能不存在:

autocmd BufWinEnter * if get(v:argv, 1, '') != '-' | silent loadview | endif
参考:

:help :get()
:help v:argv