Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
An emacs minor mode to easily switch between shell buffers (like with alt+tab)
Emacs Lisp Makefile
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
features Clarify the step
script Add executable bit to
test Test coverage for rswitcher
.ackrc Modernize package structure using skeletor.el
.gitignore Add generated -pkg.el file
.travis.yml No info to build
AUTHORS Update copyright date Modernize package structure using skeletor.el
COPYING Add necessary AUTHORS and COPYING files
Cask Adds undercover to check test coverage
Makefile Looks like the order of loaded files is important Add coverage badge
requirements.txt Arrange the Makefile so it can build a tarball
rswitcher.el Try to use 'names' to simplify code
shell-switcher.el Use 'names' to simplify code

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.


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)
Something went wrong with that request. Please try again.