Bagaimana saya harus mengubah alur kerja saya ketika pindah dari IDO ke Helm

44

Sebagai seorang pemula Emacs, saya menemukan IDO dan menyukainya karena membuat pencarian file jauh lebih cepat. Setelah menghabiskan waktu di situs ini, saya telah membaca lebih banyak tentang Helm dan saya berencana untuk beralih. Beberapa pertanyaan saya adalah:

  1. Apa perbedaan terbesar?
  2. Secara khusus, bagaimana alur kerja saya harus berubah ketika menemukan file, berpindah buffer, atau memanggil perintah baru?

Saya menggunakan posting ini untuk mengatur Helm, tetapi pencarian file saya ( C-x C-f) dan switch buffer ( C-x b) terlihat sama seperti sebelumnya.

Ini konfigurasi saya:

(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
sumber
1
Seperti yang sudah Anda sadari, Anda lupa untuk mengikat perintah spesifik Helm untuk mengganti perintah stock Emacs. Jika Anda terus membaca panduan untuk setiap perintah Helm tertentu, Anda akan melihat bahwa saya meletakkan binding kunci (jika mungkin) dan pengaturan di setiap bagian. Meskipun demikian, selamat menikmati Helm :)
Tu Do

Jawaban:

29

DIPERBARUI (Perubahan helm, perubahan konfigurasi pribadi, dan komentar Tu Do).

Saya beralih dari IDO ke Helm beberapa tahun yang lalu dan saya tidak pernah melihat ke belakang.

  • Saya menemukan presentasi lebih bersih daripada katakanlah ido-vertikal-mode misalnya.
  • Helm tidak memiliki pencocokan fleksibel.
  • Anda tidak perlu smex, dll. Helm melakukan semuanya.
  • Artikel Tu do bagus karena menyediakan beberapa screenshot animasi yang bagus tentang apa yang dapat dilakukan Helm.

Saya menggunakan proyektil Helm, Helm swoop, Helm semantic, Helm ag dan beberapa perintah interaktif Helm. Periksa halaman Melpa untuk paket terkait Helm yang mungkin menarik bagi Anda.

Berikut ini beberapa pengaturan terkait Helm saya:

(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
sumber
@Ryan Perhatikan bahwa standar helm-boring-file-regexp-listberisi lebih dari yang disajikan di sini. Jika Anda menggunakan pengaturan remiro, perhatikan hal ini. Mungkin ini pilihannya. helm-input-idle-delaydan helm-idle-delay default0,01 bulan yang lalu, untuk membuat respons secepat mungkin. Secara keseluruhan, pengaturannya baik-baik saja.
Tu Do
Penjajaran Anda sangat bagus! Bagaimana Anda mengaturnya?
Dari
Terima kasih @fommil, saya hanya menggunakan 'align-regexp' dengan '#' sebagai parameter dan sesekali multiple-cursors.
rimero
Jawaban Anda sangat bagus. Namun saya punya pertanyaan - menggunakan Proyektil + Ido dan projectile-find-filehanya akan memunculkan satu baris di bagian bawah layar, Helm + Proyektil akan tetapi seluruh popup. Apakah ada opsi untuk mengubah perilaku ini?
Ven
@Ven, ada beberapa opsi untuk menampilkan penyelesaian IDO secara vertikal seperti emacswiki.org/emacs/InteractivelyDoThings#toc24 , github.com/creichert/ido-vertical-mode.el , github.com/larkery/ido-grid-mode .el .
rimero