Helm layer
Table of ContentsClose
1. Description
This layer enables Helm everywhere in Spacemacs. The alternative to this layer is the Ivy layer which brings the same level of integration as Helm.
These completion systems are the central control towers of Spacemacs, they are used to manage buffers, projects, search results, configuration layers, toggles and more…
Mastering your choice of completion system will make you a Spacemacs power user.
1.1. Features:
- Project wide
grep
like text search viahelm-dir-smart-do-search
- Project wide text replacements using
helm-edit-mode
- Buffer wide dynamic text search via
helm-swoop
- Fuzzy matching for most
helm-sources
- Detailed configuration parameters for helms appearance
- Intuitive
transient state
2. Install
Helm is part of the standard distribution of Spacemacs so you don't have to do anything to install it if you chose this distribution.
If you want/need to explicitly install Helm then add it to your ~/.spacemacs
.
You will need to add helm
to the existing dotspacemacs-configuration-layers
list in this file.
Make sure that the other completion layers: compleseus
and ivy
are removed
or commented out in the dotspacemacs-configuration-layers
list. Or add helm
below the other completion layers. Spacemacs uses the completion layer that's
listed last.
2.1. Alternative layers
Ivy layer is a replacement layer for Helm. When you add ivy
to the existing
list in your dotfile, it will completely replace the helm
layer.
To switch from Ivy to Helm, modify your ~/.spacemacs
. You will need to add
helm
to the existing dotspacemacs-configuration-layers
list in this file,
and remove ivy
.
3. Configuration
Note: in the following configuration examples, it is possible that helm
is not listed explicitly in your dotfile. If that is the case then just add
it as you would with any other layers.
3.1. Auto-Resize
It is possible to have Helm to resize its buffer window to adapt to the length
of the candidate list. By default the buffer size is fixed, to enable automatic
resizing set the layer variable helm-enable-auto-resize
to non-nil.
(setq-default dotspacemacs-configuration-layers '( (helm :variables helm-enable-auto-resize t)))
Default value is nil
.
3.2. Disable Helm header
To hide the header in the Helm buffer set the layer variable helm-no-header
to non-nil.
(setq-default dotspacemacs-configuration-layers '( (helm :variables helm-no-header t)))
Default value is nil
.
3.3. Define Helm position
To set the position of the Helm buffer add the layer variable helm-position
to your dotfile.
The supported values are bottom
, top
, left
and right
.
(setq-default dotspacemacs-configuration-layers '( (helm :variables helm-position 'top)))
Default value is bottom
.
3.4. Enable fuzzy searching in Helm buffers
It is possible to control the fuzziness of Helm when searching for candidates.
By default this layer enable fuzzy search for all supported Helm sources.
It this creates issues please disable it by setting this value to 'source
.
In this case please open an issue so that this can be fixed.
(setq-default dotspacemacs-configuration-layers '( (helm :variables helm-use-fuzzy 'source)))
Default value is always
.
3.5. Ripgrep: maximum number of column
If you use ripgrep
the default value for --max-columns
is 512
. To change
if set the layer variable spacemacs-helm-rg-max-column-number
.
(setq-default dotspacemacs-configuration-layers '( (helm :variables spacemacs-helm-rg-max-column-number 1024)))
4. Key bindings
4.2. Transient state
Spacemacs defines a transient state for Helm
to make it work like Vim's Unite
plugin.
Initiate the transient state with M-SPC
or s-M-SPC
while in a Helm
buffer.
Key binding | Description |
---|---|
M-SPC or s-M-SPC |
initiate the transient state |
q |
quit transient state |
TAB |
switch to actions page and leave the transient state |
1 |
execute action 0 |
2 |
execute action 1 |
3 |
execute action 2 |
4 |
execute action 3 |
5 |
execute action 4 |
6 |
execute action 5 |
7 |
execute action 6 |
8 |
execute action 7 |
9 |
execute action 8 |
0 |
execute action 9 |
a |
switch to actions page |
g |
go to first candidate |
G |
go to last candidate |
h |
go to previous source |
j |
select next candidate |
k |
select previous candidate |
l |
go to next source |
t |
mark current candidate |
T |
mark all candidates |
v |
execute persistent action |
4.3. Files
In the helm-files
buffer:
Key binding | Description |
---|---|
S-<return> |
open the selected file in other window |
4.4. Buffers
In the helm-buffers
buffer:
Key binding | Description |
---|---|
S-<return> |
open the selected buffer in other window |
4.5. Bookmarks
In the helm-bookmarks
buffer:
Key binding | Description |
---|---|
C-d |
delete the selected bookmark |
C-e |
edit the selected bookmark |
C-f |
toggle filename location |
S-<return> |
open the selected bookmark in other window |
4.6. Colors/Faces
Key binding | Description |
---|---|
SPC C l |
helm-colors |
SPC h d F |
spacemacs/helm-faces |
4.7. C-z and Tab switch
The command bound to C-z
is much more useful than the one bound to Tab, so it
makes sense to swap them. It's also recommended here.
4.8. Helm focus
If you find yourself unable to return focus to Helm (after a careless
mouse-click for example), use SPC w b
to return focus to the minibuffer.
4.9. Helm-swoop
Helm-swoop is very similar to moccur
, it displays a helm
buffer with all the
occurrences of the word under point. You can then change the search query in
real-time and navigate between them easily.
You can even edit the occurrences directly in the helm
buffer and apply the
modifications to the buffer.
Key binding | Description |
---|---|
SPC s C |
clear helm-swoop own cache |
SPC s s |
execute helm-swoop |
SPC s S |
execute helm-multi-swoop |
SPC s C-s |
execute helm-multi-swoop-all |
4.10. Universal argument
SPC u
is not working before helm-M-x
(SPC SPC
). Instead, call helm-M-x
first, select the command you want to run, and press C-u
before pressing
<return>
. For instance: SPC SPC org-reload C-u RET
4.11. Replacing text in several files
If you have rg
, ag
, pt
or ack
installed, replacing an occurrence of text
in several files can be performed via helm-ag.
To replace all occurrences of foo
with bar
in your current project:
- Initiate a search with
SPC /
(in a project) - Open
helm-ag-edit
withC-c C-e
- Go to an occurrence of
foo
and enteriedit-mode
withSPC s e
- Change
foo
tobar
- Save the modifications and leave
helm-ag-edit
withC-c C-c
- Alternatively, discard all changes and leave
helm-ag-edit
withC-c C-k
Note: In Spacemacs, helm-ag
despite its name works with rg
, pt
and ack
as well (but not with grep
).
4.12. Resume last session
Use SPC r l
to resume the last helm session. For instance it is handy to
quickly toggle on and off a toggle using SPC h t
.