自定义键盘快捷键对 bash 脚本不起作用

自定义键盘快捷键对 bash 脚本不起作用

我是一名 emacs 用户,编写过一些 emacs 配置文件。

我想运行客户端服务器emacs 的功能使用单一bash 脚本这将负责 emacs 服务器和客户端。脚本将运行服务器(如果尚未运行),然后在所需的框架(终端或图形)中运行客户端。

我已将可执行脚本软链接到/usr/bin/emacs(覆盖默认值),以便运行emacs命令可以完成这项工作。该命令emacs现在从终端以及通过启动脚本Alt+F2。问题是,将键盘快捷键绑定到同一命令(或脚本)不起作用。

我在这里附加了我的快捷方式的屏幕截图。 在此处输入图片描述

shell脚本可以找到这里

/usr/bin/emacsPS:当链接到默认的 emacs 可执行文件(/etc/alternatives/emacs在我的情况下为)时,键盘快捷键运行良好。

答案1

我尝试重现您的问题并且我想我已经接近了。

我发现您所面临的问题与条件有关if [[ -t 1 ]]

根据特发性肺结核

此测试选项可用于检查给定脚本中的 stdin [ -t 0 ] 或 stdout [ -t 1 ] 是否为终端。

因此,脚本将无法通过此条件检测调用它的程序。因此,这不是您问题的准确解决方案。

现在,Ubuntu 中的键绑定在内部通过虚假终端执行。实际上,变量TERM设置为哑的,当通过键绑定运行命令时。

因此,为了解决您的问题,您可以使用以下代码。

if [ $TERM == "dumb" ]
then
        TERMINAL=false
        CREATE="-c"
else
        TERMINAL=true
        CREATE="-nw"
fi

我不能保证它在所有情况下都能正常工作,但它适用于您描述的用法。
希望它能有所帮助。:)

相关内容