Jak zmienić przepływ pracy podczas przechodzenia z IDO do Helm

44

Jako nowicjusz Emacsa znalazłem IDO i pokochałem go, ponieważ znacznie przyspieszyło wyszukiwanie plików. Po spędzeniu trochę czasu na tej stronie, czytałem coraz więcej o Helmie i planuję dokonać zmiany. Niektóre z moich pytań to:

  1. Jakie są największe różnice?
  2. W szczególności, jak powinien zmienić się mój przepływ pracy podczas wyszukiwania plików, przełączania buforów lub wywoływania nowych poleceń?

Użyłem tego postu, aby skonfigurować Helma, ale moje wyszukiwania plików ( C-x C-f) i przełączniki buforów ( C-x b) wyglądają prawie tak samo jak wcześniej.

Oto moja konfiguracja:

(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
źródło
1
Jak już zdałeś sobie sprawę, zapomniałeś powiązać konkretne polecenia Helm, aby zastąpić standardowe polecenia Emacsa. Jeśli będziesz nadal czytał przewodniki dla każdego konkretnego polecenia Helm, zobaczysz, że umieściłem powiązania klawiszy (jeśli to możliwe) i skonfigurowałem w każdej sekcji. Niemniej jednak ciesz się Helmem :)
Tu Do

Odpowiedzi:

29

ZAKTUALIZOWANE (zmiany w hełmie, zmiany w osobistej konfiguracji i komentarze Tu Do).

Kilka lat temu przeszedłem z IDO na Helm i nigdy nie oglądałem się za siebie.

  • Uważam, że prezentacja jest czystsza niż, powiedzmy, tryb ido-vertical.
  • Hełm nie ma jednak elastycznego dopasowania.
  • Nie potrzebujesz smexa itp. Hełm to wszystko.
  • Artykuł Tu do jest dobry, ponieważ zawiera ładne animowane zrzuty ekranu z tego, co Helm może zrobić.

Używam pocisku Helm, Helm swoop, Helm semantic, Helm ag i niektórych interaktywnych poleceń Helm. Zapoznaj się ze stroną Melpa, aby znaleźć pakiety związane z Hełmem, które mogą Cię zainteresować.

Oto niektóre z moich ustawień związanych z Hełmem:

(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
źródło
@Ryan Zwróć uwagę, że wartość domyślna helm-boring-file-regexp-listzawiera znacznie więcej niż tutaj. Jeśli używasz konfiguracji Remiro, zwróć uwagę na ten punkt. Prawdopodobnie taka jest jego preferencja. helm-input-idle-delayi helm-idle-delay defaultbyły 0,01 miesięcy temu, aby uzyskać najszybszą możliwą odpowiedź. Ogólnie rzecz biorąc, konfiguracja jest w porządku.
Tu Do
Twoje wyrównanie jest naprawdę miłe! Jak to skonfigurować?
fommil
Dzięki @fommil, po prostu używam „align-regexp” z „#” jako parametrem i czasami multiple-cursors.
rimero
Twoja odpowiedź jest bardzo miła. Mam jednak pytanie - używając Projectile + Ido i projectile-find-filewyskakuję tylko jeden wiersz na dole ekranu, Helm + Projectile wyskoczy jednak całe wyskakujące okienko. Czy istnieje opcja zmiany tego zachowania?
Ven
@Ven, istnieje kilka opcji wyświetlania uzupełnień IDO w pionie, takich jak emacswiki.org/emacs/InteractivelyDoThings#toc24 , github.com/creichert/ido-vertical-mode.el , github.com/larkery/ido-grid-mode .el .
rimero