2013-12-17 61 views
43

我用ssh [email protected]連接到遠程機器。當我需要在遠程機器上我做的,例如打開一個文件,什麼是用emacs和ssh打開遠程文件的最佳方式

emacs /usr/share/nginx/html/index.html

,並在打開的index.html文件中的殼。我注意到一些emacs命令可以工作,但其他的不起作用。例如,C-w不起作用; M-<不起作用。我該如何解決這個問題,以及使用emacs和ssh的最佳方式是什麼?我發現this question但它讓我更困惑。

+1

哪些是做的工作命令的一些例子嗎? (有時遠程計算機上存在不同的鍵綁定 - 檢查遠程計算機上的.emacs文件 - ,有時整個鍵的工作方式會有所不同 - 例如默認情況下,GNU屏幕會吸收[Ctrl-A部分命令](http: /superuser.com/questions/422126/remap-ctrl-a-in-gnu-screen),纔可以得到emacs的。) – kbshimmyo

+1

C-空間,CF,CG作品 – Zeynel

+0

我找不到遙控器在.emacs文件現在機器,但我知道我沒有在另一臺機器上做任何新的密鑰綁定 – Zeynel

回答

87

我通常更喜歡從本地Emacs實例打開遠程文件。

當你本地機器上運行的Emacs,打開一個遠程文件通過ssh並不比打開任何其他文件除了稍微different syntax太大的不同。

對於ssh,您可以鍵入C-x C-f。現在,在minubuffer中你想輸入/ssh:[email protected]:/path/to/file(注意一旦你開始鍵入一個路徑,製表符的完成將會起作用,並且注意前導字符/)。查看完整的docs here

在您的例子,這將是:

C-x C-f /ssh:[email protected]:/usr/share/nginx/html/index.html 

現在你可以通過SSH在Emacs您在使用本地配置和任何已安裝的軟件包,等編輯遠程文件...

+14

OP可能有興趣知道這個功能叫做'tramp',它是你將要使用的最有用的東西之一。它甚至可以遠程編譯! – pmr

+0

這很好,所有的命令似乎都可以工作,但是我發現它不會讓我編輯'index.html',因爲它說緩衝區是隻讀的。但是如果我在遠程計算機上打開,我可以編輯相同的文件。順便說一下,當我用'C-x C-f/ssh:user @ host filename'打開文件時,它向我詢問密碼。 – Zeynel

+0

我試過Documents目錄中的另一個文件,我可以毫無問題地編輯那個文件。 – Zeynel

18

我想補充上面的答案,你可以寫你使用 頻繁機器快捷鍵:

(defun connect-remote() 
    (interactive) 
    (dired "/[email protected]:/")) 

這將打開一個dired BUF在遠程機器上運行。您可以像在本地一樣導航此緩衝區 。

如果您已經爲遠程機器設置了ssh密鑰,那麼您甚至不必輸入密碼。

如果你有一堆遠程機器,你可以給每個函數一些可識別的名字 。 connect-cupcakeconnect-kitkat和使用smex包完成。

+0

這很好。我會試試看。你是否也對我在上面評論中提到的問題有了一個答案:如果我在遠程機器上打開它,我可以編輯這個文件'/ usr/share/nginx/html/index.html';但是當我用ssh打開它時,'index.html'是隻讀的。爲什麼是這樣? – Zeynel

+0

我猜你沒有和root用戶連接,通常他只能寫' 到'/ usr/share /'。 –

+0

但我如何以root用戶身份進行連接?我嘗試了一些東西,例如'C-x C-f/sudo ssh:user @ host filename',但這不起作用。 – Zeynel

13

,並增加@ ABO血型ABO的一篇關於 「捷徑」 -

使用Emacs書籤。只需在訪問遠程文件或目錄時正常創建書籤。然後,只需使用C-x r b即可跳轉到遠程書籤,該書籤的名稱由您提供(完成時)。

如果您使用Bookmark+,則遠程書籤會在*Bookmark List*中特別突出顯示,因此您可以更輕鬆地識別它們。並且必須通過susudoroot)訪問的遠程書籤以不同方式突出顯示。

如果您使用Dired+,那麼您還可以通過訪問Dired中包含的遠程目錄,標記它們並打到C-x b來快速爲多個遠程文件或目錄添加書籤。無需提供書籤名稱;他們以文件命名。即使您從不使用這些書籤導航到遠程文件,也可以使用這些書籤與書籤+tags組織這些文件,從而對它們的子集進行操作。

如果使用Icicles那麼無論你使用一個命令跳轉到書籤,您可以縮小完成候選人那些通過完成期間打[email protected]遙控器。

3

一個簡單的答案,重點在遠程機器上:

如果我打算做我所有的emacs在遠程機器上工作,我用

ssh -X [email protected] 

,然後在遠程會話中運行的Emacs,在我的本地機器上顯示。這是一個古老的問題,但我想把它放在一個完整的地方。當然,有一些xhost/X配置問題,但在許多網絡中,這將立即起作用!

1

SSH mode for emacs是你在找什麼。

一旦你有它設置你只要運行

M-x ssh RET hostname RET 

然後,它會提示你輸入密碼兩次(一次爲命令行,一旦加載文件)。

因爲你可以把它像任何其他外殼大部分(非交互式和一些細微的差別,但僅此而已)。

它跟蹤的你在哪個目錄,所以當你想打開從你看它的目錄中的文件會自動啓動合適的目錄,你只需要在文件名輸入。

Emacs Wiki有更多的信息了。

相關問題