IDO से Helm पर जाते समय मुझे अपने वर्कफ़्लो को कैसे बदलना चाहिए


44

Emacs newbie के रूप में, मुझे IDO मिला और इसे बहुत पसंद आया क्योंकि इसने फाइलों को इतनी जल्दी खोज लिया। इस साइट पर कुछ समय बिताने के बाद, मैंने हेल्म के बारे में अधिक से अधिक पढ़ा है और मैं स्विच बनाने की योजना बना रहा हूं। मेरे कुछ प्रश्न हैं:

  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 के विशिष्ट कमांड को बांधना भूल गए। यदि आप प्रत्येक विशिष्ट हेलम कमांड के लिए मार्गदर्शिकाएँ पढ़ते रहते हैं, तो आप देखेंगे कि मैं प्रत्येक खंड में मुख्य बाँध (यदि संभव हो) और सेटअप कर रहा हूँ। फिर भी, हेल्म :)
टू डू

जवाबों:


29

अद्यतन (हेल्म बदलता है, व्यक्तिगत कॉन्फ़िगरेशन बदलता है, और Tu Do टिप्पणियाँ)।

मैंने कुछ साल पहले आईडीओ से हेल्म में स्विच किया था और मैंने कभी पीछे मुड़कर नहीं देखा।

  • मुझे उदाहरण के लिए आइडो-वर्टिकल-मोड कहने की तुलना में प्रेजेंटेशन क्लीनर मिला।
  • हालांकि हेल्म में फ्लेक्स मैचिंग नहीं है।
  • आप smex की जरूरत नहीं है, आदि। Helm यह सब करता है।
  • टीयू लेख अच्छा है क्योंकि यह हेल्म क्या कर सकता है के कुछ अच्छे एनिमेटेड स्क्रीनशॉट प्रदान करता है।

मैं Helm प्रोजेक्टाइल, Helm swoop, Helm semantic, Helm ag और कुछ 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)

@ रयान ध्यान दें कि डिफ़ॉल्ट helm-boring-file-regexp-listमें यहां प्रस्तुत की तुलना में बहुत अधिक है। यदि आप रीमिरो के सेटअप का उपयोग करते हैं, तो इस बिंदु पर ध्यान दें। संभवतः यह उनकी प्राथमिकता है। helm-input-idle-delayऔर helm-idle-delay default0.01 महीने पहले, सबसे तेजी से संभव प्रतिक्रिया करने के लिए थे। कुल मिलाकर, सेटअप ठीक है।
तू डो

आपका संरेखण वास्तव में अच्छा है! आप इसे कैसे सेट करते हैं?
फेमिल

धन्यवाद @fommil, मैं सिर्फ पैरामीटर और कभी-कभी '#' के साथ 'संरेखित-रेक्सएक्सपी' का उपयोग करता हूं multiple-cursors
रीमरो

आपका जवाब बहुत अच्छा है। हालांकि मेरा एक सवाल है - प्रोजेक्टाइल + बर्ड्स का उपयोग करना और projectile-find-fileस्क्रीन के नीचे केवल एक ही लाइन पॉप करेगा, हेल्म + प्रोजेक्टाइल एक पूरे पॉपअप होगा। क्या इस व्यवहार को बदलने का कोई विकल्प है?
शुक्र

@ फिर, IDO पूर्णता को प्रदर्शित करने के लिए कई विकल्प हैं जैसे कि emacswiki.org/emacs/InteractivelyDoThings#toc24 , github.com/creichert/ido-vertical-mode.el , github.com/larkery/ido-grid-mode .el
rimero
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.