効率を向上させるemacs構成×10


emacsを使用してしばらく経って、自分の実践したいくつかのショートカット構成をまとめました.私が使っているバージョンは自分でコンパイルした24.5です.

前のbufferへの高速切り替え


バッファC-xb RETを切り替えるのはまだ少し煩雑で、私が2つのバッファ区間で急速に編集する時、私は1つの動作が切替を完成することができることを望んで、だから私はShift+TABを設定して前のbufferを切り替えます
(global-set-key (kbd "<backtab>") #'(lambda ()
                                      (interactive)
                                      (switch-to-buffer (other-buffer (current-buffer) 1))))

キーボードマクロの録画と再生


デフォルトF 3は録画マクロ、F 4は録画停止、C-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)

行番号の表示、かっこの一致、ハイライトされたかっこのペア、美化記号の表示

;;  
(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)

undo-treeデフォルトで1回取り消す


undo-treeは素晴らしいですが、ほとんどの場合、私たちは1回だけ元に戻す必要があります.C-x u p RETを押す必要があります.次のバインドにより、undo-treeはデフォルトで1回元に戻す状態でC-x u RETになり、pを1回少なく押すことができます.一度取り消す場合はショートカットキーを個別に設定すべきだと思いますが、取り消す回数は多くありません.
(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バッファに切り替えたくないので、私は次のコードを書いて、F 2を押して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プロジェクトの上でダウンロードの住所を探して自分でインストールする必要があります.
   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)