如何在已開啟的 Emacs 而不是新實例中從 bash 命令列開啟檔案?

如何在已開啟的 Emacs 而不是新實例中從 bash 命令列開啟檔案?

如何在已開啟的 Emacs 而不是新實例中從 bash 命令列開啟檔案?當我打字時

$ emacs file.txt

它會開啟一個新的 Emacs 實例,而不是在現有 Emacs 實例中開啟檔案。 Mac OS X 10.6.8。和

GNU Emacs 23.4.1 (x86_64-apple-darwin10.8.0, NS apple-appkit-1038.36)

beta.macosforge.org 上的 2012 年 2 月 27 日發布

答案1

您正在尋找的是 emacs 伺服器模式。將此行新增至您的 .emacs 檔案:

(server-start)

然後,使用 emacsclient 開啟該檔案:

emacsclient foobar.txt

看一下頁面了解更多。


為了避免手動啟動 emacs 或將其設定為自動啟動,您可以編寫一個小函數來嘗試連接到正在運行的伺服器(透過執行emacsclient),如果沒有,emacs請執行。將其新增至 shell 的設定檔中(例如~/.bashrc):

emacs(){ 
    emacsclient "$@" 2>/dev/null || /usr/bin/emacs "$@" 
}

現在,只需運行emacs file即可啟動伺服器或連接到現有實例。

答案2

恐怕我不記得在哪裡找到了以下解決方案。對不起。但是,由於它對我來說效果最佳,所以我將其添加到此處。

確保您.emacs啟動了 emacs 伺服器。

(server-start)

接下來,在.bashrc定義函數中:

function run_emacs
{
/usr/bin/emacsclient "$1" &
}

並設定環境變數:

export EDITOR=emacsclient
export ALTERNATE_EDITOR=emacs

最後,定義別名:

alias emacs='run_emacs'

相關內容