簡體   English   中英

Emacs shell模式在緩沖區中打開文件

[英]Emacs shell mode open file in buffer

我的設置:

  • Emacs終端模式( emacs -nw
  • 在它里面,使用shell模式(用Mx ansi-term調用)
  • 在這個shell中,用ssh連接到遠程服務器

假設我正在瀏覽shell中的遠程服務器並找到我想要編輯的文件。 是否有命令將其作為並行緩沖區/窗口打開?

我知道從shell打開文件的唯一方法是再次執行emacs -nw ,這不太方便,因為a)我不保持shell打開,b)它實際上是一個不同的Emacs會話,例如“yank緩沖區”是不同的。

編輯:如果有一個不同的/更好的方式來使用Emacs的遠程服務器,我只是感興趣; 這就是我想要做的。

最好使用tramp。

我有這個快捷方式(我用smex稱它):

(defun connect-remote ()
  (interactive)
  (dired "/user@domain.com:/"))

這將在遙控器上打開一個直接緩沖區。 你只需將它用作任何直接緩沖區。

我有一個函數從dired打開一段時間,但我剛剛從tramp dired緩沖區添加了一個ssh選項:

(defun dired-open-term ()
  "Open an `ansi-term' that corresponds to current directory."
  (interactive)
  (let ((current-dir (dired-current-directory)))
    (term-send-string
     (terminal)
     (if (file-remote-p current-dir)
         (let ((v (tramp-dissect-file-name current-dir t)))
           (format "ssh %s@%s\n"
                   (aref v 1) (aref v 2)))
       (format "cd '%s'\n" current-dir)))))

(defun terminal ()
  "Switch to terminal. Launch if nonexistent."
  (interactive)
  (if (get-buffer "*terminal*")
      (switch-to-buffer "*terminal*")
    (term "/bin/bash")))

這是我使用的快捷方式:

(define-key dired-mode-map (kbd "`") 'dired-open-term)

您可以在原始emacs會話中使用tramp來使用dired通過ssh瀏覽遠程服務器。 然后,您打開的任何遠程文件都會在本地emacs會話中打開。

如果您希望避免使用dired並希望使用shell進行瀏覽,則可以將遠程位置(/ name @ host:/ path / from / pwd)添加到文件名中。 您可以使用功能自動執行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM