Tôi nên thay đổi quy trình làm việc của mình như thế nào khi chuyển từ IDO sang Helm


44

Là một người mới sử dụng Emacs, tôi đã tìm thấy IDO và yêu thích nó vì nó giúp việc tìm kiếm các tệp nhanh hơn rất nhiều. Sau khi dành một chút thời gian trên trang web này, tôi đã đọc nhiều hơn về Helm và tôi đang lên kế hoạch thực hiện chuyển đổi. Một số câu hỏi của tôi là:

  1. Sự khác biệt lớn nhất là gì?
  2. Cụ thể, quy trình làm việc của tôi nên thay đổi như thế nào khi tìm tệp, chuyển đổi bộ đệm hoặc gọi lệnh mới?

Tôi đã sử dụng bài đăng này để thiết lập Helm, nhưng tìm kiếm tệp của tôi ( C-x C-f) và bộ chuyển đổi bộ đệm ( C-x b) trông khá giống như trước đây.

Đây là cấu hình của tôi:

(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
Như bạn đã nhận ra, bạn đã quên liên kết các lệnh cụ thể của Helm để thay thế các lệnh Emacs stock. Nếu bạn tiếp tục đọc các hướng dẫn cho từng lệnh Helm cụ thể, bạn sẽ thấy rằng tôi đặt các ràng buộc chính (nếu có thể) và thiết lập trong mỗi phần. Tuy nhiên, hãy tận hưởng Helm :)
Tu Do

Câu trả lời:


29

CẬP NHẬT (Thay đổi Helm, thay đổi cấu hình cá nhân và nhận xét Tu Do).

Tôi đã chuyển từ IDO sang Helm vài năm trước và tôi không bao giờ nhìn lại.

  • Tôi thấy trình dọn dẹp trình bày hơn là giả sử chế độ theo chiều dọc chẳng hạn.
  • Helm không có kết hợp flex mặc dù.
  • Bạn không cần smex, v.v ... Helm làm tất cả.
  • Bài viết Tu do rất tốt vì nó cung cấp một số ảnh chụp màn hình hoạt hình đẹp về những gì Helm có thể làm.

Tôi sử dụng Helm đạn, Helm swoop, Helm semantic, Helm ag và một số lệnh tương tác Helm. Kiểm tra trang Melpa cho các gói liên quan đến Helm có thể bạn quan tâm.

Đây là một số thiết lập liên quan đến Helm của tôi:

(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 Lưu ý rằng mặc định helm-boring-file-regexp-listchứa nhiều hơn được trình bày ở đây. Nếu bạn sử dụng thiết lập của Remiro, hãy chú ý điểm này. Có lẽ đây là sở thích của anh ấy. helm-input-idle-delayhelm-idle-delay defaultlà 0,01 tháng trước, để thực hiện phản ứng nhanh nhất có thể. Nhìn chung, thiết lập là tốt.
Từ Đô

Liên kết của bạn là thực sự tốt đẹp! Làm thế nào để bạn thiết lập nó?
fommil

Cảm ơn @fommil, thỉnh thoảng tôi chỉ sử dụng 'align-regapi' với '#' làm tham số multiple-cursors.
rimero

Câu trả lời của bạn rất hay. Tuy nhiên tôi có một câu hỏi - sử dụng Projectile + Ido và projectile-find-filesẽ chỉ bật một dòng duy nhất ở cuối màn hình, tuy nhiên Helm + Projectile sẽ xuất hiện toàn bộ cửa sổ bật lên. Có một lựa chọn để thay đổi hành vi này?
Ven

@Ven, có một số tùy chọn để hiển thị các hoàn thành IDO theo chiều dọc, chẳng hạn như emacswiki.org/emacs/InteractivelyDoThings#toc24 , github.com/cre Richt/ido-vertical-mode.el , github.com/larkery/ido-grid- .el .
rimero
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.