
我是一名 emacs 用戶,並且編寫了一些 emacs 設定檔。
我想運行客戶端伺服器emacs 的特點是使用單一bash腳本這將處理 emacs 伺服器和客戶端。該腳本運行伺服器(如果尚未運行),然後透過在所需的框架(終端或圖形)中執行客戶端來追蹤伺服器。
我已將可執行腳本軟連結到/usr/bin/emacs
(覆蓋預設值),以便運行該emacs
命令為我完成工作。該命令emacs
現在從終端以及通過 啟動腳本Alt+F2
。問題是,將鍵盤快捷鍵綁定到相同命令(或腳本)不起作用。
shell腳本可以找到這裡。
/usr/bin/emacs
PS:當連結到預設的 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
我不能保證它在所有情況下都有效,但它適用於您描述的用法。
希望能幫助你。 :)