命令行中的Vim exec命令和Vim:警告:输入不是来自终端
vi.sh命令行中的Vim exec命令和Vim:警告:输入不是来自终端,vim,Vim,vi.sh vim -c "set ft=unix" -c "x" $1 sh vi.sh file1 sh vi.sh file2 sh vi.sh file1 2>/dev/null sh vi.sh file2 2>/dev/null main.sh vim -c "set ft=unix" -c "x" $1 sh vi.sh file1 sh vi.sh file2 sh vi.sh file1 2>/dev/null sh vi.sh file2 2>
vim -c "set ft=unix" -c "x" $1
sh vi.sh file1
sh vi.sh file2
sh vi.sh file1 2>/dev/null
sh vi.sh file2 2>/dev/null
main.sh
vim -c "set ft=unix" -c "x" $1
sh vi.sh file1
sh vi.sh file2
sh vi.sh file1 2>/dev/null
sh vi.sh file2 2>/dev/null
如果我执行sh vi.sh文件1
或sh main.sh
,则没有警告
但是如果我执行cat main.sh | sh,它会给出:Vim:警告:输入不是来自终端
有什么区别?当我运行
cat main.sh | sh
时,如何消除此警告消息?很容易抑制此警告
main.sh
vim -c "set ft=unix" -c "x" $1
sh vi.sh file1
sh vi.sh file2
sh vi.sh file1 2>/dev/null
sh vi.sh file2 2>/dev/null
但请注意,它实际上会抑制所有警告
原因可能是Vim发现您的管道已打开,而Vim命令未从stdin
读取任何内容。所以这个警告就像一个提醒
因此,更好的解决方案是将命令保存在某个地方,例如,make.sh本身并启动它
这里还有一个关于这个问题的问题
在
~/bin/r
[ $# -eq 0 ] && set -- -;
vim -R "$@"
在my.vimrc
中:
au StdinReadPost * set buftype=nofile
您必须执行伪tty分配。 尝试类似(
vi.sh
):
#/垃圾箱/垃圾箱
exec vim-c“set ft=unix”-c“x”“$@”
相关的:
- 在维姆东南
cat main.sh
进入sh
?为什么不干脆/main.sh
?实际上它是bzcat*
如果cat
起作用,bzcat
也应该起作用。只需使用cat
即可,例如set的可能重复--
将参数设置为参数的其余部分不确定额外参数的原因,exec vim[文件]