Comment dois-je modifier mon flux de travail lors du passage d'IDO à Helm

44

En tant que novice Emacs, j'ai trouvé IDO et je l'aimais beaucoup car cela permettait de rechercher des fichiers beaucoup plus rapidement. Après avoir passé un peu de temps sur ce site, j'ai lu de plus en plus d'informations sur Helm et je prévois de faire le changement. Certaines de mes questions sont:

  1. Quelles sont les plus grandes différences?
  2. En particulier, comment mon flux de travail devrait-il changer lors de la recherche de fichiers, du changement de mémoire tampon ou de l’appel de nouvelles commandes?

J'ai utilisé ce post pour configurer Helm, mais mes recherches de fichiers ( C-x C-f) et mes commutateurs de mémoire tampon ( C-x b) ont à peu près la même apparence qu'avant.

Voici ma config:

(require 'helm)
(require 'helm-config)

;; The default "C-x c" is quite close to "C-x C-c", which quits Emacs.
;; Changed to "C-c h". Note: We must set "C-c h" globally, because we
;; cannot change `helm-command-prefix-key' once `helm-config' is loaded.
(global-set-key (kbd "C-c h") 'helm-command-prefix)
(global-unset-key (kbd "C-x c"))

(define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action) ; rebihnd tab to do persistent action
(define-key helm-map (kbd "C-i") 'helm-execute-persistent-action) ; make TAB works in terminal
(define-key helm-map (kbd "C-z")  'helm-select-action) ; list actions using C-z

(when (executable-find "curl")
  (setq helm-google-suggest-use-curl-p t))

(setq helm-quick-update                     t ; do not display invisible candidates
      helm-split-window-in-side-p           t ; open helm buffer inside current window, not occupy whole other window
      helm-buffers-fuzzy-matching           t ; fuzzy matching buffer names when non--nil
      helm-move-to-line-cycle-in-source     t ; move to end or beginning of source when reaching top or bottom of source.
      helm-ff-search-library-in-sexp        t ; search for library in `require' and `declare-function' sexp.
      helm-scroll-amount                    8 ; scroll 8 lines other window using M-<next>/M-<prior>
      helm-ff-file-name-history-use-recentf t)

(helm-mode 1)
Ryan
la source
1
Comme vous l'avez déjà compris, vous avez oublié de lier des commandes spécifiques à Helm pour remplacer les commandes stock d'Emacs. Si vous continuez à lire les guides pour chaque commande spécifique Helm, vous verrez que je mets des raccourcis clavier (si possible) et que je les configure dans chaque section. Néanmoins, profitez de Helm :)
Tu Do

Réponses:

29

MISE À JOUR (changements de barre, modifications de configuration personnelle et commentaires Tu Do).

Je suis passé d'IDO à Helm il y a quelques années et je ne l'ai jamais regretté.

  • Je trouve la présentation plus propre que, disons, ido-vertical-mode par exemple.
  • Helm n'a pas le flex correspondant cependant.
  • Vous n'avez pas besoin de smex, etc. Helm fait tout.
  • L'article de Tu do est bon car il fournit quelques belles captures d'écran animées de ce que Helm peut faire.

J'utilise Helm projectile, Helm swoop, Helm Semantic, Helm ag et certaines des commandes interactives de Helm. Commander la page Melpa pour les paquets connexes barre qui pourraient vous intéresser.

Voici une partie de ma configuration liée à Helm:

(setq helm-ff-transformer-show-only-basename nil
      helm-adaptive-history-file             "~/.emacs.d/data/helm-history"
      helm-yank-symbol-first                 t
      helm-move-to-line-cycle-in-source      t
      helm-buffers-fuzzy-matching            t
      helm-ff-auto-update-initial-value      t)

(autoload 'helm-descbinds      "helm-descbinds" t)
(autoload 'helm-eshell-history "helm-eshell"    t)
(autoload 'helm-esh-pcomplete  "helm-eshell"    t)

(global-set-key (kbd "C-h a")    #'helm-apropos)
(global-set-key (kbd "C-h i")    #'helm-info-emacs)
(global-set-key (kbd "C-h b")    #'helm-descbinds)

(add-hook 'eshell-mode-hook
          #'(lambda ()
              (define-key eshell-mode-map (kbd "TAB")     #'helm-esh-pcomplete)
              (define-key eshell-mode-map (kbd "C-c C-l") #'helm-eshell-history)))

(global-set-key (kbd "C-x b")   #'helm-mini)
(global-set-key (kbd "C-x C-b") #'helm-buffers-list)
(global-set-key (kbd "C-x C-m") #'helm-M-x)
(global-set-key (kbd "C-x C-f") #'helm-find-files)
(global-set-key (kbd "C-x C-r") #'helm-recentf)
(global-set-key (kbd "C-x r l") #'helm-filtered-bookmarks)
(global-set-key (kbd "M-y")     #'helm-show-kill-ring)
(global-set-key (kbd "M-s o")   #'helm-swoop)
(global-set-key (kbd "M-s /")   #'helm-multi-swoop)

(require 'helm-config)
(helm-mode t)
(helm-adaptative-mode t)

(global-set-key (kbd "C-x c!")   #'helm-calcul-expression)
(global-set-key (kbd "C-x c:")   #'helm-eval-expression-with-eldoc)
(define-key helm-map (kbd "M-o") #'helm-previous-source)

(global-set-key (kbd "M-s s")   #'helm-ag)

(require 'helm-projectile)
(setq helm-projectile-sources-list (cons 'helm-source-projectile-files-list
                                         (remove 'helm-source-projectile-files-list 
                                              helm-projectile-sources-list)))
(helm-projectile-on)

(define-key projectile-mode-map (kbd "C-c p /")
  #'(lambda ()
      (interactive)
      (helm-ag (projectile-project-root))))

(define-key org-mode-map (kbd "C-x c o h") #'helm-org-headlines)
rimero
la source
@Ryan Notez que la valeur par défaut helm-boring-file-regexp-listcontient beaucoup plus que ce qui est présenté ici. Si vous utilisez la configuration de remiro, remarquez ce point. C'est probablement sa préférence. helm-input-idle-delayet helm-idle-delay defaultétaient il y a 0,01 mois, pour obtenir la réponse la plus rapide possible. Globalement, la configuration est correcte.
Tu Do
Ton alignement est vraiment sympa! Comment vous configurez-vous cela?
fommil
Merci @fommil, je viens d'utiliser 'align-regexp' avec '#' comme paramètre et occasionnellement multiple-cursors.
Rimero
Votre réponse est très gentille. J'ai cependant une question - en utilisant Projectile + Ido et projectile-find-filene fera apparaître qu'une seule ligne au bas de l'écran, Helm + Projectile sera tout un popup. Existe-t-il une option pour changer ce comportement?
Ven
@Ven, il existe plusieurs options pour afficher les complétions IDO verticalement, telles que emacswiki.org/emacs/InteractivelyDoThings#toc24 , github.com/creichert/ido-vertical-mode.el , github.com/larkery/ido-grid-mode .el .
Rimero