gpt4 book ai didi

linux - vim过滤命令中断时执行命令

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:56 24 4
gpt4 key购买 nike

我在 vim 中使用过滤器命令来调用有时需要中断的 bash 脚本。我通过在 vim 窗口中按 Ctrl+C 来完成此操作。然后 bash 脚本终止(至少 vim 停止了过滤器命令)但是我传递给过滤器命令的文本(通常是视觉选择)将丢失。如果我通过 Ctrl+C 中断执行或 bash 脚本以 0 以外的退出状态结束,我希望 vim 返回到过滤器命令之前的状态。请注意,我知道我可以按 u 来撤消,但我想修改过滤器命令以执行此操作,因为我可能会忘记按 u 并在不注意的情况下松开文本。

最佳答案

您可以在 bash 中设置信号和/或退出处理程序。 man bash/trap.*sigspec

类似于:

trap "your_commands"  SIGINT
my_program

要让它“保留”文本,您可能需要这样的东西:

TIN=`mktemp`
TOUT=`mktemp`
cat > $TIN
trap "cat $TIN; rm -f $TIN; rm -f $TOUT" EXIT
do_something < $TIN > $TOUT || cp $TIN $TOUT
mv $TOUT $TIN

检查我的 Vim,似乎可以正常工作。 (使用 sedsleep 作为 do_something 测试)

关于linux - vim过滤命令中断时执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10782960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com