IDO에서 Helm으로 이동할 때 워크 플로우를 어떻게 변경해야합니까


44

이맥스 초보자로서, IDO를 발견하고 파일 검색이 훨씬 빨라 졌기 때문에 IDO를 좋아했습니다. 이 사이트에서 약간의 시간을 보낸 후 Helm에 대해 더 많이 읽었으며 전환을 계획하고 있습니다. 내 질문 중 일부는 다음과 같습니다.

  1. 가장 큰 차이점은 무엇입니까?
  2. 특히 파일을 찾거나 버퍼를 전환하거나 새 명령을 호출 할 때 워크 플로를 어떻게 변경해야합니까?

내가 사용 이 게시물을 투구를 설정,하지만 내 파일 검색 ( C-x C-f) 및 버퍼 스위치 ( C-x b전과 같이) 거의 같은 모양.

내 구성은 다음과 같습니다.

(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
이미 알고 있듯이 재고 Emacs 명령을 대체하기 위해 Helm 특정 명령을 바인딩하는 것을 잊었습니다. 각 특정 Helm 명령에 대한 안내서를 계속 읽으면 가능한 경우 키 바인딩을 설정하고 각 섹션에 설정 한 것을 볼 수 있습니다. 그럼에도 불구하고 Helm :)
Tu Do

답변:


29

업데이트 됨 (헬름 변경, 개인 구성 변경 및 Tu Do 주석).

몇 년 전에 IDO에서 Helm으로 전환했는데 결코 뒤돌아 보지 않았습니다.

  • 예를 들어 ido-vertical-mode라고 말하는 것보다 프레젠테이션이 더 깨끗합니다.
  • Helm에는 플렉스 매칭이 없습니다.
  • 당신은 smex 등이 필요하지 않습니다. Helm은 모든 것을 수행합니다.
  • Tu do 기사는 Helm이 할 수있는 멋진 애니메이션 스크린 샷을 제공하기 때문에 좋습니다.

Helm 발사체, Helm swoop, Helm 의미, Helm ag 및 Helm 대화식 명령 중 일부를 사용합니다. 관심있는 Helm 관련 패키지 는 Melpa 페이지확인하십시오 .

다음은 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 기본값 helm-boring-file-regexp-list에는 여기에 제시된 것보다 훨씬 많은 것이 포함되어 있습니다. remiro 설정을 사용하는 경우이 점에 유의하십시오. 아마도 이것이 그의 취향 일 것입니다. helm-input-idle-delay그리고 helm-idle-delay default가장 빠른 응답을 만들기 위해, 0.01 개월 전이었다. 전반적으로 설정이 정상입니다.
Tu Do

당신의 정렬은 정말 좋습니다! 어떻게 설정합니까?
fommil

@fommil 덕분에 '#'을 매개 변수로 사용하고 때로는 'align-regexp'를 사용합니다 multiple-cursors.
rimero

당신의 대답은 매우 좋습니다. 그러나 Projectile + Ido를 사용하여 질문 projectile-find-file이 있으며 화면 하단에 한 줄만 표시되지만 Helm + Projectile은 전체 팝업이 표시됩니다. 이 동작을 변경할 수있는 옵션이 있습니까?
Ven

@Ven에는 emacswiki.org/emacs/InteractivelyDoThings#toc24 , github.com/creichert/ido-vertical-mode.el , github.com/larkery/ido-grid-mode 와 같이 IDO 완료를 세로로 표시하는 몇 가지 옵션이 있습니다. .el .
rimero
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.