Wie soll ich meinen Workflow ändern, wenn ich von IDO zu Helm wechsle?

44

Als Emacs-Neuling habe ich IDO gefunden und es geliebt, weil es die Suche nach Dateien so viel schneller gemacht hat. Nachdem ich einige Zeit auf dieser Site verbracht habe, habe ich immer mehr über Helm gelesen und plane, den Wechsel vorzunehmen. Einige meiner Fragen sind:

  1. Was sind die größten Unterschiede?
  2. Wie sollte sich mein Workflow ändern, wenn ich Dateien finde, zwischen Puffern wechsle oder neue Befehle aufrufe?

Ich habe diesen Beitrag verwendet , um Helm einzurichten, aber meine Dateisuchen ( C-x C-f) und Pufferschalter ( C-x b) sehen fast genauso aus wie zuvor.

Hier ist meine Konfiguration:

(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
quelle
1
Wie Sie bereits festgestellt haben, haben Sie vergessen, Helm-spezifische Befehle zu binden, um die Standard-Emacs-Befehle zu ersetzen. Wenn Sie die Handbücher für die einzelnen Helm-Befehle lesen, werden Sie feststellen, dass ich in den einzelnen Abschnitten (wenn möglich) Tastenzuordnungen und Einstellungen vorgenommen habe. Trotzdem viel Spaß mit Helm :)
Tu Do

Antworten:

29

AKTUALISIERT ( Helmänderungen , persönliche Konfigurationsänderungen und Tu Do-Kommentare).

Ich bin vor ein paar Jahren von IDO zu Helm gewechselt und habe nie zurückgeschaut.

  • Ich finde die Präsentation sauberer als zum Beispiel im Ido-Vertical-Modus.
  • Helm hat jedoch keine Flex-Anpassung.
  • Du brauchst kein Smex usw. Helm macht alles.
  • Der Tu-do-Artikel ist gut, da er einige schöne animierte Screenshots von Helm enthält.

Ich benutze Helm projectile, Helm swoop, Helm semantic, Helm ag und einige der interaktiven Befehle von Helm. Schauen Sie auf der Melpa-Seite nach Helm-Paketen, die Sie interessieren könnten.

Hier sind einige meiner Helm-bezogenen Einstellungen:

(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
quelle
@ Ryan Beachten Sie, dass die Standardeinstellung helm-boring-file-regexp-listviel mehr als hier dargestellt enthält. Wenn Sie das Setup von remiro verwenden, beachten Sie diesen Punkt. Wahrscheinlich ist das seine Vorliebe. helm-input-idle-delayund helm-idle-delay defaultwaren vor 0,01 Monaten, um die schnellstmögliche Antwort zu geben. Insgesamt ist das Setup in Ordnung.
Tu Do
Ihre Ausrichtung ist wirklich nett! Wie stellst du das ein?
14.
Danke @fommil, ich benutze nur 'align-regexp' mit '#' als Parameter und gelegentlich multiple-cursors.
rimero
Ihre Antwort ist sehr nett. Ich habe jedoch eine Frage - mit Projectile + Ido projectile-find-filewird nur eine einzelne Zeile am unteren Bildschirmrand eingeblendet, mit Helm + Projectile wird jedoch ein ganzes Popup eingeblendet. Gibt es eine Option, um dieses Verhalten zu ändern?
Ven
@Ven, es gibt einige Optionen zum vertikalen Anzeigen von IDO-Vervollständigungen, wie z. B. emacswiki.org/emacs/InteractivelyDoThings#toc24 , github.com/creichert/ido-vertical-mode.el , github.com/larkery/ido-grid-mode .el .
Rimero