No, I couldn't just call this post "Helm". The terrible title I chose called to me, and so I acquiesced. Helm is the most invasive package I've installed thus far. It replaces the majority of commands where user input is expected (e.g., C-x b, C-x C-f, C-x k, M-x) with its own version. Helms commands offer lists of candidates, shown in a pop-up window, which can be filtered, navigated, and selected. This is far more powerful than the default commands, and I find it useful.

An instance of C-x C-f (helm-find-files) appears as follows:

2017-02-08-at-the-helm.png

Now let's get that package in the system.

(use-package helm
  :ensure t
  :pin melpa-stable
  :diminish helm-mode
  :bind
  ("M-x" . helm-M-x)
  ("C-x C-f" . helm-find-files)
  :init
  (setq helm-mode-fuzzy-match t)
  :config
  (helm-mode 1))

Fuzzy matching has been enabled, which requires more processing of a list of candidates, but I have used this feature in the past and appreciated it. To explain be example, I can type C-h v hmfm looking for helm-mode-fuzzy-match and the list of candidates will include every variable that matches the regex .*h.*m.*f.*m.*, which is a lot of candidates. As always, if this annoys me later I can disable it effortlessly.

When I initially installed Helm, I limited its use to M-x, but found that I enjoyed it a great deal. I have used Interactive Do (Ido) in earlier times, but I like Helm better. There's also Ivy which is the new kid on the block, but until Helm pisses me off someday it has my (fickle) loyalty.