![](/img/trans.png)
[英]Open an Emacs buffer when a command tries to open an editor in shell-mode
[英]Emacs shell mode open file in buffer
我的设置:
emacs -nw
) ansi-term
调用) 假设我正在浏览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.