我的设置:
emacs -nw
)ansi-term
调用)假设我正在浏览shell中的远程服务器并找到我要编辑的文件。是否有命令将其作为并行缓冲区/窗口打开?
我知道从shell打开文件的唯一方法是再次执行emacs -nw
,这不太方便,因为a)我不保持shell打开并且b)它真的是一个不同的Emacs会话,所以例如“yank buffer”是不同的。
编辑:如果有一个不同的/更好的方式与Emacs使用远程服务器我感兴趣;这就是我想要做的事情。
答案 0 :(得分:6)
最好使用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)
答案 1 :(得分:2)
您可以在原始emacs会话中使用tramp来使用dired通过ssh浏览远程服务器。然后,您打开的任何远程文件都会在本地emacs会话中打开。
如果您希望避免使用dired并希望使用shell进行浏览,则可以将远程位置(/ name @ host:/ path / from / pwd)添加到文件名中。您可以使用函数自动执行该操作。