6

想一想:用 eshell 平铺我的 emacs 窗口,一个 xmonad。这可能吗?我可以 Mx eshell 打开第一个 eshell 实例,但未来的调用只关注第一个实例。

4

7 回答 7

13

你可以这样做:

`C-u M-x eshell`

这将创建*eshell*,*eshell*<2>等。

于 2010-03-29T20:36:44.907 回答
7

我首选的方法是创建命名 shell:

(defun make-shell (name)
  "Create a shell buffer named NAME."
  (interactive "sName: ")
  (setq name (concat "$" name))
  (eshell)
  (rename-buffer name))

是要点。然后M-x make-shell name将创建所需的外壳。

于 2010-03-29T21:52:01.280 回答
4

eshell 的文档字符串指出“非数字前缀 arg 意味着创建一个新会话”。我M-- M-x eshell一遍又一遍地输入,每次它都会打开一个新的 eshell 缓冲区。

于 2010-03-29T20:26:17.577 回答
1

Cu Mx eshell 效果很好,但我更喜欢命名 shell - make-shell方法,在切换缓冲区时很有用

于 2011-05-18T06:10:24.810 回答
0

对于那些使用 ansi-term 的人来说,调用 GNU Screen 是另一种选择

于 2010-11-10T10:40:02.663 回答
0

Mybe,以下解决方案更好。因为 eshell 缓冲区是由 eshell-buffer-name 的值决定的。您无需重命名缓冲区。

(defun buffer-exists (bufname)   
  (not (eq nil (get-buffer bufname))))

(defun make-shell (name)
  "Create a shell buffer named NAME."
  (interactive "sName: ")
  (if (buffer-exists "*eshell*")
      (setq eshell-buffer-name name)
    (message "eshell doesnot exists, use the default name: *eshell*"))
  (eshell))
于 2014-05-06T01:52:22.630 回答
0

扩展make-eshell,这会创建一个 eshell 附加下一个计数器,所以它就像eshell1eshell2等:

(lexical-let ((count 1))
  (defun make-eshell-next-number ()
    (interactive)
    (eshell)
    (rename-buffer (concat "*eshell" (number-to-string count) "*"))
    (setq count (1+ count))))
于 2015-11-21T01:35:24.777 回答