bash 腳本的自訂鍵盤快速鍵不起作用

bash 腳本的自訂鍵盤快速鍵不起作用

我是一名 emacs 用戶,並且編寫了一些 emacs 設定檔。

我想運行客戶端伺服器emacs 的特點是使用單一bash腳本這將處理 emacs 伺服器和客戶端。該腳本運行伺服器(如果尚未運行),然後透過在所需的框架(終端或圖形)中執行客戶端來追蹤伺服器。

我已將可執行腳本軟連結到/usr/bin/emacs(覆蓋預設值),以便運行該emacs命令為我完成工作。該命令emacs現在從終端以及通過 啟動腳本Alt+F2。問題是,將鍵盤快捷鍵綁定到相同命令(或腳本)不起作用。

我在這裡附上我的快捷方式的螢幕截圖。 在此輸入影像描述

shell腳本可以找到這裡

/usr/bin/emacsPS:當連結到預設的 emacs 可執行檔(/etc/alternatives/emacs在我的例子中為 at)時,鍵盤快捷鍵運作良好。

答案1

我嘗試重現你的問題,我想我已經接近了。

我發現你面臨的問題是與條件有關if [[ -t 1 ]]

根據tldp

此測試選項可用於檢查給定腳本中的 stdin [ -t 0 ] 或 stdout [ -t 1 ] 是否為終端。

因此,腳本將無法偵測透過此條件呼叫它的程式。因此,這不是您問題的準確解決方案。

現在,在內部,Ubuntu 中的鍵綁定是透過假終端執行的。事實上,該TERM變數設定為啞的,當透過鍵綁定運行命令時。

因此,為了解決您的問題,您可以使用以下程式碼。

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

我不能保證它在所有情況下都有效,但它適用於您描述的用法。
希望能幫助你。 :)

相關內容