iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
0
Software Development

Emacs 來寫程式系列 第 6

[Emacs-6] 讓你更快速執行指令的套件, Ivy-mode

Ivy-mode: 更快執行指令,更快搜尋的次模式

  • 前面提到過,一般在 Emacs 執行指令,除了可以綁住一些組合鍵外,如果有像是在寫程式時的自動補全功能,也就是你不用打完整段指令,用選的來執行,是不是還可以更快些?
  • 在 Emacs 的環境中,有多種選擇來做這種增加生產力的套件,像是最常見的 ivy-mode, helm-mode,這裏我們介紹 ivy-mode
  • 當你用一些片段的句子,例如原先要執行 Meta-x package-list-packages 你可以只打 Meta-x pa list pa,就可以顯示一串符合的字串來讓你選擇,如 command,又像是 Ctrl-x Ctrl-f 來開啟檔案時,也可以用一部分的關鍵字來開啟,例如 Ivy mode
  • Ivy-mode 其實包含幾個工具
    • Ivy: 一種客製化的小緩衝區顯示方式,例如前面例子裡的小緩衝區的操作,就是用 Ivy 來客製化
    • Counsel: 取代原生的一些常用指令,改用 Counsel 透過 ivy 來執行,例如前面的 Ctrl-x Ctlr-f就取代了原生的 Find File 指令
    • Swiper: 取代原生的搜尋 I-search,改用跟 ivy 介面的更方便的搜尋

安裝

  • 安裝 ivy: 使用前面介紹的 use-package
(use-package ivy
  :ensure t
  :diminish (ivy-mode . "")
  :config
  (ivy-mode 1)
  (setq ivy-use-virutal-buffers t)
  (setq enable-recursive-minibuffers t)
  (setq ivy-height 10)
  (setq ivy-initial-inputs-alist nil)
  (setq ivy-count-format "%d/%d")
  (setq ivy-re-builders-alist
        `((t . ivy--regex-ignore-order)))
  )
  • 基本上定義了小緩衝區的高度 ivy-height,設定初始的 list 為空 ivy-initial-input-alist nil,如何顯示總共符合的數目以及目前的位置 ivy-count-format "%d/%d",當用 regex 可以不管次序 ivy--regex-ignore-order,這些可以看跟個人喜好調整,完整的說明請看ivy
  • 安裝 Counsel
(use-package counsel
  :ensure t
  :bind (("M-x" . counsel-M-x)
         ("C-x C-f" . counsel-find-file)))
  • 這裏我們只用了兩個,使用 counsel-M-x 來取代原先的 Meta-x,指令執行,以及檔案尋找及開啟的 counsel-find-file,其他還可以選的像是 counsel-describe-functioncounsel-describe-variable...詳細可以參考 counsel
  • 安裝 Swiper
(use-package swiper
  :ensure t
  :bind (("C-s" . swiper))
  )

搜尋畫面例如,在小緩衝區中可以使用 pn 鍵來上下移動, 移動時上面緩衝區的游標也會跟著移動,要搜尋的字會用特別顏色顯示Swiper

安裝及操作影片請看 Yes

簡報請參考 我的部落格

如果你不想打這些程式,可以直接到 github 下載 init.el 到你的 **~/.emacs.d/**底下,直接開 Emacs 就會自動安裝好這些套件


上一篇
[Emacs-5] 套件管理及基本設定
下一篇
[Emacs-7] 管理程式碼片段 (Snippet) 的 yasnippet 套件
系列文
Emacs 來寫程式30

尚未有邦友留言

立即登入留言