vi.sh
vim -c "set ft=unix" -c "x" $1
main.sh
sh vi.sh file1
sh vi.sh file2
如果我执行 sh vi.sh file1
或 sh main.sh
,没有警告。
但是如果我执行 cat main.sh | sh
,会出现以下警告: Vim: 警告:输入不来自终端
。
这有什么区别?当我运行 cat main.sh | sh
时,如何消除此警告消息?
vi.sh
vim -c "set ft=unix" -c "x" $1
main.sh
sh vi.sh file1
sh vi.sh file2
如果我执行 sh vi.sh file1
或 sh main.sh
,没有警告。
但是如果我执行 cat main.sh | sh
,会出现以下警告: Vim: 警告:输入不来自终端
。
这有什么区别?当我运行 cat main.sh | sh
时,如何消除此警告消息?
您需要进行伪终端分配。
可以尝试以下命令(vi.sh
):
#!/bin/sh
exec vim -c "set ft=unix" -c "x" "$@" < /dev/tty
相关内容:
exec vim [files] </dev/tty
可以正常工作。 - localhostdotdev抑制警告很容易。
main.sh
sh vi.sh file1 2>/dev/null
sh vi.sh file2 2>/dev/null
make.sh
本身并启动它。在 ~/bin/r
中
[ $# -eq 0 ] && set -- -;
vim -R "$@"
.vimrc
文件中:au StdinReadPost * set buftype=nofile
set --
将参数设置为其余的参数。 - jthill
cat main.sh
输入到sh
中?为什么不直接使用./main.sh
呢? - Gary Fixlerbzcat *
... 如果cat
能用,那么bzcat
也应该能用。只需以cat
为例即可。 - nfpyfzyf