#!/bin/bash
if [ $# -ne 1 ]
then
echo "USAGE:vitest filename"
else
FILENAME=$1
exec vi $FILENAME <<EOF
i
Line 1.
Line 2.
^[
ZZ
EOF
fi
exit 0
我正在尝试使用此处的文档和命令通过 Exec vi 输入第 1 行和第 2 行。
运行脚本时,它会给出以下内容:
Vim(?):Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Press ENTER or type command to continueVim: Finished.
Vim: Error reading input, exiting...
Vim: Finished.
最佳答案
您希望以 ex
模式启动 vi
,并对脚本进行一些细微的更改。
vi -e "$FILENAME" <<EOF
i
Line 1.
Line 2.
.
wq
EOF
exec
几乎肯定是不必要的,特别是因为 vi
后面有一个 exit
命令。 exec
用于用给定的命令替换当前脚本;仅仅执行命令并不需要它。
UNIX 文本编辑器简史:
ed
是最初的编辑器,设计用于电传打字机而不是视频终端。ex
是ed
的扩展版本,旨在利用视频终端。vi
是一个为ex
提供全屏视觉模式的编辑器,与ed
采用的面向行的界面形成鲜明对比和前
。
关于bash - 使用exec vi时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39738758/