An emacs minor mode to easily switch between shell buffers (like with alt+tab)
Emacs Lisp Makefile Gherkin
Latest commit 28a7f75 Oct 29, 2016 @DamienCassou Remove most warnings
Failed to load latest commit information.
.ackrc Modernize package structure using skeletor.el Feb 3, 2014
AUTHORS Update copyright date Feb 3, 2014
COPYING Add necessary AUTHORS and COPYING files Jul 13, 2012
Makefile Looks like the order of loaded files is important Dec 11, 2014
rswitcher.el Remove most warnings Oct 29, 2016

Emacs shell-switcher

Build 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:

  • C-' opens the first 2 buffers (one after the other) and switch between them
  • Repeating ' continues switching after an initial C-'
  • C-M-' forces the creation of a new shell
  • C-x 4 ' is similar to C-' but within another window.

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)