在Emacs中使用多个shell buffer

在Emacs中使用多个shell buffer

工作中非常依赖GNU Emacs和Terminal,总在两个程序之间来回切换,不舒坦,虽然我已经把Emacs和Term指定在不同的虚拟桌面。

不爽之,遂改之,我想在Emacs里面舒服的使用shell。

为什么?

引用

这个问题,我个人认为不是一个技术问题,而是一个生活舒适度的问题。之所以选择在 Emacs 里面使用 Shell,就是因为在 Emacs 里面会使你的生活的更加舒适。

我的需求:

- 在Emacs方便地创建,切换,关闭多个shell buffer。

- 对已有的终端程序具备良好的兼容性。

首先,其实Emacs里面就集成多种shell工具:

1. M-x shell-command

2. shell-mode

3. eshell

4. ansi-term

shell-command并非交互式的term;shell-mode默认并不支持多个shell buffer,虽然通过multi-shell.el和其他扩展形式可以解决此问题,但shell-mode的兼容性并不理想;eshell是使用Elisp实现的完整的shell,在进行某些操作时的性能也许是个问题。

ansi-term是用Elisp实现的Term Emulator,兼容性不用担心,通过ansi-term在Emacs里面运行vi和字符界面的emacs都没问题,但是,其默认的操作方式并不方便。

MutliTerm扩展可以很好的解决此问题。

首先下载MutliTerm并放在你的Emacs扩展目录,在.emacs中加入

;;; multi-term
(load-file (expand-file-name "/usr/share/emacs/site-lisp/multi-term.el"))
(require 'multi-term)

还有我的个人设置:

;; personal setting
(setq multi-term-program "/bin/bash")
(setq multi-term-buffer-name "term")
(global-set-key "\C-x." 'multi-term)
(global-set-key "\C-x," 'multi-term-dedicated-open)

重启Emacs,执行M-x multi-term即可。(我的Emacs还启动了tabbar-mode)

(在Emacs中运行VIM,just for fun :P)

MultiTerm可以用两种方式来使用shell:

1. M-x multi-term,打开多个常规的buffer,新buffer会占满当前的window:


2. M-x multi-term-dedicated-open,MultiTerm会在下方分割出一个小的dedicated window并新建一个buffer,专门用于term的使用。当输入exit,或kill掉term buffer,dedicated window会自动关闭,焦点自动回到原来的工作buffer。类似于RememberMode的方式,非常方便。

也有一个小不爽:使用multi-term-dedicated-open时,dedicated window打开后,焦点默认还会留在原来的buffer,但我希望快速的使用term,所以最好是能自动跳到dedicated window上。这个没有customize选项,所以只能改multi-term.el中的multi-term-dedicated-open()方法:

@@ -397,7 +397,10 @@
           (multi-term-internal))
         (set-window-buffer multi-term-dedicated-window (get-buffer (multi-term-dedicated-get-buffer-name)))
         (set-window-dedicated-p multi-term-dedicated-window t)
-        (select-window current-window))
+        ;;(select-window current-window)
+       (select-window multi-term-dedicated-window)
+       )
+    (select-window multi-term-dedicated-window)
     (message "`multi-term' dedicated window has exist.")))

非常感谢作者Andy Stewart,在新版本multi-term.el 0.8.8中已经加入了相应的customization选项,在.emacs文件里加入

(setq multi-term-dedicated-select-after-open-p t)

即可。

MultiTerm配和TabbarMode使用非常舒服,现在就齐了!

感谢作者Andy Stewart的great work!

;; Author: Andy Stewart, lazycat.manatee{at}gmail.com
;; Maintainer: Andy Stewart, lazycat.manatee{at}gmail.com
;; Copyright (C) 2008, 2009, Andy Stewart, all rights reserved.


4 Comments

你并不需要修改源代码。

multi-term-dedicated-open 函数用于打开终端窗口,
multi-term-dedicated-select 函数用于选择终端窗口。

你可以写一个函数调用以上两个函数即可, 这样及时我更新源代码也不会受影响。

— Andy

Posted by Andy Stewart on 4 July 2009 @ 6am

请更新 multi-term.el 0.8.8

现在你可以使用选项: multi-term-dedicated-select-after-open-p 用于终端窗口打开后的聚焦。

有问题给我发邮件。

谢谢使用 multi-term.el, Enjoy!

— Andy

Posted by Andy Stewart on 4 July 2009 @ 6am

thanks Andy!

Posted by jiabin on 10 August 2009 @ 12pm

没想到一下子就找到这了
multi-term用起来实在太爽了

Posted by cola1129 on 6 November 2009 @ 11am

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值