我有一个 screenrc 文件,但是当我在 screen 中运行 emacs 时发现了一些冲突。例如,在 emacs 中跨缓冲区移动,Ctrl-右箭头/左箭头,而不是来回移动将一些字符发送到缓冲区,例如 5C、5D 等。即使我在没有任何 screenrc 文件的情况下调用 screen 时也存在这个问题。但至少其他冲突不存在。但如果有人能告诉我如何解决这个问题,我将不胜感激?
由于我的 screenrc 文件中有我自己的绑定并且我想继续使用它,所以我想我会保留我的 screenrc 文件,但是当我想在新屏幕中启动 emacs 时,我不会使用我的 screenrc。有什么方法可以在调用 screen 时不使用 screenrc 吗?到目前为止,我一直通过在启动 emacs 时将我的 screenrc 文件重命名为其他内容来进行管理。
有什么方法可以让 emacs 本身作为屏幕工作,就像我使用屏幕一样,这样我的 emacs 会话就不会在远程 ssh 会话出现故障时终止。我找到了一些关于 emacs 客户端和 emacs 服务器的文档,但不太了解。如果有人能告诉我如何在 emacs 中保存会话并恢复它们,我将不胜感激,如果可能的话,我不需要为 emacs 使用屏幕,因为一个人应该能够再次恢复 emacs 进程。
小智 9
我只对你的问题 #3 有意见。
从 emacs 23 开始,emacs 有一个守护进程模式,对我来说,它消除了在屏幕内运行 emacs 的需要。在启动后第一次登录时,我从emacs --daemon
终端启动。这会在后台启动 emacs。然后,每当我需要使用 emacs 时,我要么运行emacsclient -nc
以获取一个 X 窗口到我的 emacs 会话,要么emacsclient -t
获取一个终端会话。
多个客户端可以愉快地共存。我经常在工作时在工作站屏幕上运行 X 客户端,从家里通过 ssh 登录运行 X 客户端,并在手机上运行终端客户端。所有人都在与同一个 emacs 进程交谈,我的所有缓冲区和其他状态都完好无损。如果我手机上的 ssh 连接中断,我可以在再次登录后从上次中断的地方继续。
我对屏幕中的键绑定了解不够,无法帮助您解决前两个问题。
小智 8
1) 这与 Emacs 插入终端发送的转义序列的方式有关。这是有趣的东西!您应该配置您的input-decode-map,例如,通过在您的 .emacs 文件中定义以下函数:
(defun terminal-init-screen ()
"Terminal initialization function for GNU screen."
(when (boundp 'input-decode-map)
(define-key input-decode-map "^[[1;5C" [(control right)])
(define-key input-decode-map "^[[1;5D" [(control left)])))
Run Code Online (Sandbox Code Playgroud)
(请注意,^[
上面示例中的不是插入符号后跟一个左括号,而是一个单独的转义字符,您可以像这样键入:C-q ESC。)
这个函数被运行在 screen 内的 Emacs 神奇地调用了。
2)您可以使用其-c
选项调用屏幕,以指定与默认.screenrc
. 因此,如果您对 screen 有特殊配置,并且只想在您在 screen 内运行 Emacs 时应用,您可以将它们放在一个文件中.emacs-screenrc
,然后在 screen 内运行 emacs,如下所示:
screen -c .emacs-screenrc emacs
Run Code Online (Sandbox Code Playgroud)
请注意,此文件可能为空。
3) 在 emacs 中管理会话有时会很乏味。现成的 Emacs 提供了我个人不使用的桌面保存模式,但我已经阅读了关于它的混合报告。您可能想尝试一下。在Emacs wiki上可以找到对替代方法的很好的概述。
首先,会话管理的替代方案是将 Emacs 作为服务器运行并使用emacsclient
. 不知道你看到的是哪个文档,不过GNU官方的Emacs文档通常都很好。看看它:
http://www.gnu.org/software/libtool/manual/emacs/Emacs-Server.html#Emacs-Server
归档时间: |
|
查看次数: |
4118 次 |
最近记录: |