git clone 'git://'

Emacs shell-switcher

Build Status Coverage Status

shell-switcher provides fast switching between shell buffers.

shell-switcher screencast
A shell-switcher screencast


With Emacs' packaging system

Make sure you have marmalade repository ready to use and type M-x package-install shell-switcher.


Download shell-switcher from github and add it to your load-path. Then, add the following to your init file:

(require 'shell-switcher)


To activate shell-switcher, you have to set the variable shell-switcher-mode to t, either through customize-variable or with:

(setq shell-switcher-mode t)

You have to customize shell-switcher-new-shell-function if eshell is not your shell of choice. For example, if you wanted to use Powershell:

(defun make-powershell ()
  "Create a new `powershell'."
  (powershell (generate-new-buffer-name "*PowerShell*")))
(setq-default shell-switcher-new-shell-function 'make-powershell)


The standard key bindings are:

You can change them by adapting and adding the following to your configuration file:

(define-key shell-switcher-mode-map (kbd "C-'")
(define-key shell-switcher-mode-map (kbd "C-x 4 '")
(define-key shell-switcher-mode-map (kbd "C-M-'")

If you tend to create shells without using shell-switcher but still would like to easily switch between them, write the following (to be adapted if eshell is not your preferred shell):

(add-hook 'eshell-mode-hook 'shell-switcher-manually-register-shell)