Shell脚本调用vim编辑器,获取退出方法

标签 shell vim debian exitstatus

我即将编写一个 shell 脚本来编辑一些文件。

我这样做:

/usr/bin/vim $file

现在我想问一下vim的退出状态。 如果用户关闭并保存更改,则执行某些操作(:wq 或:x),或者如果关闭但未进行更改(:q, :q!),则执行其他操作

if [ vi-exit-status=wq ] ; then
    # do this
else # vi didn't save anything
    # do that
fi

我怎样才能做到这一点? 当我调用 vi 创建一个新文件并退出而不保存时 (:q!),然后我通过

检查状态
echo $?

答案是 0。如果我通过 vi/vim 保存某些内容或创建文件,它也是 0。

亲切的问候

最佳答案

退出状态不会告诉你用户在 vim 中做了什么。也许您可以比较文件前后的时间戳来查看它是否被写入?

这对我有用:

echo Edit me > editme.txt
time1=`stat -c%y editme.txt`
vim editme.txt
time2=`stat -c%y editme.txt`
if [ "$time1" != "$time2" ]; then
    echo You saved it.
else
    echo No change.
fi

关于Shell脚本调用vim编辑器,获取退出方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15132481/

相关文章:

javascript - yarn 错误 : There are no scenarios; must have at least one

Linux - 如何用大括号括起来的相同字符串替换一些字符串?

linux - 检查 bash 中的正确列

macos - git:EOF 处的新空行

vim - Vim 的自动右括号

vim - 在节点 Docker 镜像中安装 vim

linux - Sudo 进入一个用户,启动一个进程并记录它

linux - 为什么/usr/bin/timeout 会杀死整个管道?

windows - 抑制 Windows 命令行中的错误消息

ruby - 无法在 debian 7.6 上安装 rmagick(包冲突)