¿Cómo debo cambiar mi flujo de trabajo al pasar de IDO a Helm?


44

Como novato en Emacs, encontré IDO y me encantó, ya que hizo que la búsqueda de archivos fuera mucho más rápida. Después de pasar un tiempo en este sitio, he leído más y más sobre Helm y planeo hacer el cambio. Algunas de mis preguntas son:

  1. ¿Cuáles son las mayores diferencias?
  2. Específicamente, ¿cómo debería cambiar mi flujo de trabajo al encontrar archivos, cambiar buffers o llamar a nuevos comandos?

Utilicé esta publicación para configurar Helm, pero mis búsquedas de archivos ( C-x C-f) y los interruptores del búfer ( C-x b) se parecen bastante a los de antes.

Aquí está mi configuración:

(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)

1
Como ya se dio cuenta, olvidó vincular los comandos específicos de Helm para reemplazar los comandos Emacs originales. Si sigue leyendo las guías para cada comando específico de Helm, verá que pongo las combinaciones de teclas (si es posible) y la configuración en cada sección. Sin embargo, disfruta Helm :)
Tu Do

Respuestas:


29

ACTUALIZADO (cambios de timón, cambios de configuración personal y comentarios de Tu Do).

Cambié de IDO a Helm hace unos años y nunca miré hacia atrás.

  • La presentación me parece más limpia que, por ejemplo, el modo ido-vertical.
  • Sin embargo, Helm no tiene coincidencia flexible.
  • No necesitas smex, etc. Helm lo hace todo.
  • El artículo Tu do es bueno, ya que proporciona algunas capturas de pantalla animadas de lo que Helm puede hacer.

Utilizo el proyectil Helm, Helm swoop, Helm semantic, Helm ag y algunos de los comandos interactivos de Helm. Pedido la página melpa paquetes relacionados timón que pueden interesarle.

Estas son algunas de mis configuraciones relacionadas con 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)

@ Ryan Observe que el valor predeterminado helm-boring-file-regexp-listcontiene mucho más de lo que se presenta aquí. Si usa la configuración de remiro, observe este punto. Probablemente esta sea su preferencia. helm-input-idle-delayy helm-idle-delay defaultfueron hace 0,01 meses, para dar la respuesta más rápida posible. En general, la configuración está bien.
Tu Do

¡Tu alineación es realmente agradable! ¿Cómo se configura eso?
fommil

Gracias @fommil, solo uso 'align-regexp' con '#' como parámetro y ocasionalmente multiple-cursors.
rimero

Tu respuesta es muy buena. Sin embargo, tengo una pregunta: usando Projectile + Ido y projectile-find-filesolo aparecerá una sola línea en la parte inferior de la pantalla, Helm + Projectile aparecerá sin embargo una ventana emergente completa. ¿Hay alguna opción para cambiar este comportamiento?
Ven

@Ven, hay un par de opciones para mostrar las finalizaciones de IDO verticalmente, como emacswiki.org/emacs/InteractivelyDoThings#toc24 , github.com/creichert/ido-vertical-mode.el , github.com/larkery/ido-grid-mode .el .
rimero
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.