在工作空间中,我的意思是 – 我需要保存打开缓冲区的状态(可能位于用户指定的工作区文件中)并快速切换到另一组打开的缓冲区,例如继续处理与另一个项目相关的文件。
有没有一个Emacs插件允许这个? 你会推荐哪一个?
我使用了保存访问文件和工作组的组合 。 事实上,工作组可能会自己做大部分的工作。
我的配置:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; workgroups for windows (setq wg-prefix-key (kbd "Cc z") wg-no-confirm t wg-file (concat emacs-persistence-directory "workgroups") wg-use-faces nil wg-switch-on-load nil) (defun wg-load-default () "Run `wg-load' on `wg-file'." (interactive) (wg-load wg-file)) (defun wg-save-default () "Run `wg-save' on `wg-file'." (interactive) (when wg-list (with-temp-message "" (wg-save wg-file)))) (with-library 'workgroups (define-key wg-map (kbd "Cl") 'wg-load-default) (define-key wg-map (kbd "Cs") 'wg-save-default) (workgroups-mode 1) (add-hook 'auto-save-hook 'wg-save-default) (add-hook 'kill-emacs-hook 'wg-save-default))
就个人而言,我一直在使用`persp-mode' :
emacs的
perspective-el
,根据Nathan Weizenbaum的perspective-el
。 但是在各个框架之间共享的观点+保存/恢复文件的能力。
desktop.el将有助于你的情况。
它可以(从其介绍页面复制)从emacs包缓冲区中:
保存桌面,即 – 一些全局变量 – 包含关联文件的缓冲区列表。 对于每个缓冲区也是 – 主要模式 – 默认目录 – 点 – 标记 – 活动 – 缓冲区 – 只读 – 一些局部变量
如果你使用的是Linux / Gnome3,你可以试试这个扩展: https ://extensions.gnome.org/extension/361/emacs-manager/这个扩展将允许你通过管理多个emacs守护进程来同时处理不同的项目,保存/恢复缓冲区的状态。
HIROSE Yuuji的revive.el已经很好的为我工作了一段时间了。 我使用revive.el中的注释中提供的标准配置。 这个文档写得很好,而且恢复很容易使用和配置。 特别是,revive.el比一些更好的支持来恢复更复杂的配置。 如果将它与HIROSE Yuuji的windows.el结合起来会特别好。 他们是一起工作的。 windows.el使得调用窗口拆分等成为可能。revive.el构建的目的是扩展特定设置的深层模式集成。 但对于我的使用,我发现它是相当不错的,虽然我想我会下一步调整它,以恢复我目前没有安装的w3m窗口(更新:我现在做:见底部)。
这是我的复兴配置。 我包括一些有用的评论,首先为Windows.el,然后revive.el内联:
(provide 'my-revive-config) (require 'windows) ; use this with revive so that window splits are recallable ; too (win:startup-with-window) ; start with window 1 ;;;[Key Bindings] ;;; ;;; The default prefix key stroke for Windows is `Cc C-w'. If it ;;; causes you some troubles, see the section `Customizations'. ;;; Here are the default key bindings. ;;; ;;; Cc Cw 1 Switch to window 1 (Q) ;;; Cc Cw 2 Switch to window 2 (Q) ;;; : ;;; Cc Cw 9 Switch to window 9 (Q) ;;; Cc Cw 0 Swap windows with the buffer 0 (Q) ;;; (Select unallocated frame(Emacs 19)) ;;; Cc Cw SPC Switch to window previously shown (Q) ;;; Cc Cw Cn Switch to next window ;;; Cc Cw Cp Switch to previous window ;;; Cc Cw ! Delete current window (Q) ;;; Cc Cw Cw Window operation menu ;;; Cc Cw Cr Resume menu ;;; Cc Cw Cl Local resume menu ;;; Cc Cw Cs Switch task ;;; Cc Cw = Show window list (Q) ;;; ;;; The key strokes to select windows from 1 to 9 must be ;;; frequently used, so the alternative key strokes `Cc [Num.]' are ;;; available by default (And any function with (Q)mark can be ;;; invoked without Cw). To disable these quick key strokes, set ;;; the variable win:quick-selection to `nil' in your ~/.emacs. (autoload 'save-current-configuration "revive" "Save status" t) (autoload 'resume "revive" "Resume Emacs" t) (autoload 'wipe "revive" "Wipe Emacs" t) (define-key ctl-x-map "S" 'save-current-configuration) (define-key ctl-x-map "F" 'resume) (define-key ctl-x-map "K" 'wipe) ;;; ;;;[How to use] ;;; ;;; Call `save-current-configuration' (`Cx S' if you define key as ;;; above) when you want to save current editing status and call ;;; `resume' to restore it. Numerical prefix arg to them specifies ;;; the buffer number in which the editing status will be saved. ;;; Here the buffer refers to a revive s-exp in ~/.revive.el of ;;; which there can be n ;;; ;;; [Sample Operations] ;;; Cu 2 Cx S ;save status into the buffer #2 ;;; Cu 3 Cx F ;load status from the buffer #3
还有一些其他的变种,比如revive-plus.el和github上稍微修改过的克隆 ,但我更喜欢原始版本。
更新2015年1月12日,星期一:现在我可以在恢复中恢复w3m(有关详细信息,请参阅revive.el文档,尤其要查看revive中的示例:major-mode-command-alist-default):
(setq revive:major-mode-command-alist-private '(("*w3m*" . w3m)))
注意你正在告诉恢复w3m缓冲区的名字。 即使你有多个标签,只有第一个需要枚举如上。
这里是我设置的w3m变量来恢复前一个会话中的所有选项卡:
(setq w3m-session-load-last-sessions t)