spacemacs/contrib/shell/README.org

153 lines
5.4 KiB
Org Mode
Raw Normal View History

2015-06-10 16:44:30 +00:00
#+TITLE: Shell contribution layer for Spacemacs
[[file:img/shell.png]]
* Table of Contents :TOC@4:
- [[#description][Description]]
- [[#install][Install]]
- [[#layer][Layer]]
- [[#default-shell][Default shell]]
- [[#default-shell-position-and-height][Default shell position and height]]
- [[#set-shell-for-term-and-ansi-term][Set shell for term and ansi-term]]
- [[#enable-em-smart-in-eshell][Enable em-smart in Eshell]]
- [[#eshell][Eshell]]
2015-06-10 16:44:30 +00:00
- [[#key-bindings][Key bindings]]
- [[#multi-term][Multi-term]]
- [[#eshell][Eshell]]
2015-06-10 16:44:30 +00:00
* Description
This layer configures the various shells available in Emacs.
* Install
** Layer
To use this contribution add it to your =~/.spacemacs=
#+BEGIN_SRC emacs-lisp
(setq-default dotspacemacs-configuration-layers '(shell))
#+END_SRC
** Default shell
Emacs supports three types of shell:
- the Emacs shell
- the inferior shell
- the terminal emulator
- the ANSI terminal emulator
You can find a quick introductions to them [[https://www.masteringemacs.org/article/running-shells-in-emacs-overview][here]].
2015-06-10 16:44:30 +00:00
To define the default shell you can set the layer variable =shell-default-shell=
to the following variables:
- =eshell=
- =shell=
- =term=
- =ansi-term=
- =multi-term=
#+BEGIN_SRC emacs-lisp
(setq-default dotspacemacs-configuration-layers
'(shell :variables shell-default-shell 'eshell))
#+END_SRC
The default shell is quickly accessible via a the default shortcut key ~SPC '~.
** Default shell position and height
It is possible to choose where the shell should pop up by setting the variable
2015-06-10 16:44:30 +00:00
=shell-default-position= to either =top=, =bottom= or =full=. It is not possible
to show it on the side for now. Default value is =bottom=. It is also possible
to set the default height in percents with the variable =shell-default-height=.
Default value is =30=.
#+BEGIN_SRC emacs-lisp
(setq-default dotspacemacs-configuration-layers
'(shell :variables
shell-default-position 'bottom
shell-default-height 30))
#+END_SRC
** Set shell for term and ansi-term
The default shell can be set by setting the variable =shell-default-term-shell=.
Default value is =/bin/bash=.
#+BEGIN_SRC emacs-lisp
(setq-default dotspacemacs-configuration-layers
'(shell :variables shell-default-term-shell "/bin/bash"))
#+END_SRC
** Enable em-smart in Eshell
From the =em-smart= documentation:
#+BEGIN_QUOTE
The best way to get a sense of what this code is trying to do is by
using it. Basically, the philosophy represents a blend between the
ease of use of modern day shells, and the review-before-you-proceed
mentality of Plan 9's 9term.
#+END_QUOTE
In a nutshell, when =em-smart= is enabled the point won't jump at the
end of the buffer when a command is executed, it will stay at the
same command prompt used to execute the command. This allows to quickly
edit the last command in the case of a mistake. If there is no mistake
and you directly type a new command then the prompt will jump to the
next prompt at the end of the buffer.
To enable =em-smart= put the following layer variable to non-nil:
#+BEGIN_SRC emacs-lisp
(setq-default dotspacemacs-configuration-layers
'(shell :variables shell-enable-smart-eshell t))
#+END_SRC
* Eshell
Some advanced configuration is setup for =eshell= in this layer:
- some elisp functions aliases for quick access
- =s= for =magit-status= in the current directory (when the =git= layer is
installed)
- =d= for =dired=
- =e= to find a file via a new buffer
- optional configuration for =em-smart= (see =Install= section for more info)
- support for visual commands via =em-term=
- working directory sensitive prompt via [[https://github.com/hiddenlotus/eshell-prompt-extras][eshell-prompt-extras]]
- advanced help support via =esh-help= (enable =el-doc= support in eshell)
- add support for auto-completion via =company= (when the =auto-completion=
layer is installed)
- pressing ~i~ in normal state will automatically jump to the prompt
2015-06-10 16:44:30 +00:00
* Key bindings
| Key Binding | Description |
|-------------+------------------------------------------------------------|
| ~SPC '~ | Open, close or go to the default shell |
| ~SPC a s e~ | Open, close or go to an =eshell= |
| ~SPC a s i~ | Open, close or go to a =shell= |
| ~SPC a s m~ | Open, close or go to a =multi-term= |
| ~SPC a s t~ | Open, close or go to a =ansi-term= |
| ~SPC a s T~ | Open, close or go to a =term= |
| ~SPC m h~ | browse history with =helm= (works in =eshell= and =shell=) |
| ~C-j~ | next item in history |
| ~C-k~ | previous item in history |
*Note:* You can open multiple shells using a numerical prefix argument,
2015-06-10 16:44:30 +00:00
for instance pressing ~2 SPC ;~ will a second default shell, the
number of shell is indicated on the mode-line.
** Multi-term
| Key Binding | Description |
|-------------+------------------------------|
| ~SPC p $ t~ | run multi-term shell in root |
** Eshell
| Key Binding | Description |
|--------------------+--------------------------------------------|
| ~SPC m H~ or ~M-l~ | shell commands history using a helm buffer |