十個提升效率的emacs配置

bcf2 9年前發布 | 59K 次閱讀 Emacs

使用emacs一段時間了,總結出自己實踐的一些快捷配置,我用的版本是自己編譯的24.5。

快速切換至上個buffer

切換緩沖區C-x b RET還是有點繁瑣,當我在兩個緩沖區間快速編輯的時候,我希望一個動作就能完成切換,所以我設置Shift+TAB切換至上個buffer

(global-set-key (kbd "<backtab>") #'(lambda ()
                                      (interactive)
                                      (switch-to-buffer (other-buffer (current-buffer) 1))))

鍵盤宏的錄制和回放

默認F3是錄制宏,F4是停止錄制,C-x x回放宏

(global-set-key (kbd "C-x x") 'call-last-kbd-macro)

逗號后自動加空格

(global-set-key (kbd ",")
                #'(lambda ()
                    (interactive)
                    (insert ", ")))

使用yasnippet復制當前行的編輯模式

在多數編程語言中,相鄰行的代碼的冗余度是非常高的,下面的C-c TAB將當前行轉化為臨時的snippet模板,非常好用(依賴:yasnippet)

你可以嘗試一下,編輯go代碼是,在fmt.Prinln("hello world")上按C-c TAB是什么效果

(defun yasnippet-current-line ();; C-c TAB
  (interactive)
  (let ((current-line (string-trim-right (thing-at-point 'line t))))
    (end-of-line)
    (newline-and-indent)
    (yas-expand-snippet (yasnippet-string-to-template (string-trim current-line)))))

(defun yasnippet-string-to-template (string)   (let ((count 1))     (labels ((rep (text)                   (let ((replace (format "${%d:%s}" count text)))                     (incf count)                     replace)))       (replace-regexp-in-string "[a-zA-Z0-9]+" #'rep string))))        (global-set-key (kbd "C-c TAB") 'yasnippet-current-line)</pre>

顯示行號,括號匹配,高亮括號配對,美化符號顯示

;; 顯示行號
(global-linum-mode)
(setq column-number-mode t)

;; 高亮括號配對 (electric-pair-mode)

;; 高亮括號配對 (show-paren-mode t) (setq show-paren-style 'parenthesis)

;; 美化顯示符號(elisp),比如lambda會顯示為λ (prettify-symbols-mode) (global-prettify-symbols-mode 1)</pre>

undo-tree默認撤消一次

undo-tree非常棒,但是大多數時候我們只需要撤消一次,你需要按C-x u p RET,下面的綁定使得undo-tree默認處于撤消一次的狀態上C-x u RET,少按一次p。我感覺對于撤消一次的情形應該單獨設置一個快捷鍵,但好在我用撤消的次數并不多。

(require 'undo-tree)
(define-key undo-tree-map (kbd "C-x u") #'(lambda ()
                                            (interactive)
                                            (undo-tree-visualize)
                                            (undo-tree-visualize-undo)))

speedbar

老實說,spacemacs內置了helm后,我不怎么用speedbar了。speedbar的問題是他創建了一個緩沖區,而這個緩沖區對于C-x b是可見的,我從來都不想切換至speedbar緩沖區,所以我寫了下面的代碼,按F2切換speedbar的開啟狀態,并且自動刷新,當你不希望顯示speedbar的時候,干脆把buffer給kill掉。

注:我用了sr-speedbar

(require 'sr-speedbar)
(global-set-key (kbd "<f2>") (lambda()
                               (interactive)
                               (sr-speedbar-refresh)
                               (sr-speedbar-toggle)
                               (unless (sr-speedbar-exist-p)
                                 (kill-buffer "*SPEEDBAR*"))))

s鍵在speedbar中搜索

(require 'speedbar)
(define-key speedbar-mode-map (kbd "s")
  #'(lambda ()
      (interactive)
      (beginning-of-buffer)
      (isearch-forward)))
(define-key speedbar-mode-map (kbd "u")
  #'(lambda ()
      (interactive)
      (speedbar-up-directory)))

dot-spacemacs

配置elpa

把下面的代碼放進spacemacs/init中

  (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                           ("marmalade" . "https://marmalade-repo.org/packages/")
                           ("melpa" . "http://melpa.org/packages/")))

jazz顏色主題

jazz是一個暗色的主題,leuven則是亮版的代表,對Org Mode支持出奇的好,可惜在spacemacs下表現不佳。這些代碼放在set-default里面

   dotspacemacs-themes '(jazz
                         solarized-dark
                         leuven
                         solarized-light)

字體

我這里字體設置的有點大了,沒辦法,打游戲眼有點花,字體需要在spacemacs項目上找下載地址自行安裝,話說我也喜歡exvim,但自從有了spacemacs,你懂的。

   dotspacemacs-default-font '("Source Code Pro"
                               :size 24
                               :weight normal
                               :width normal
                               :powerline-scale 1.1)

將private-layer挪出來

默認在~/.emacs.d/private目錄下,那太傻,我根本不動spacemacs的源碼,都是自己創建init-package-layer

configuration-layer-private-directory "~/dot-spacemacs/"

設置專屬yasnippet模板

默認spacemacs帶了一堆snippet模板,老實說我都不敢按TAB,誰知道會冒出些什么,于是我干脆自定義了snippet模板路徑,所有的模板都改為大寫,比如在golang里面fmt.Println,模板縮寫是PLN。全部改為大寫后,誤操作少了很多。

      (require 'yasnippet)
      (setq yas-snippet-dirs "~/dot-spacemacs/snippets")
      (yas-global-mode 1)
      (yas-reload-all)

Org Mode

外行用emacs第一動力應該是org mode,但org mode范圍很廣,強烈推薦看官方manual,下面是官方推薦的設置,我覺得太贊了。

(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-cc" 'org-capture)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cb" 'org-iswitchb)

來自:

 本文由用戶 bcf2 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!