spacemacs/spacemacs/keybindings.el

177 lines
6.8 KiB
EmacsLisp

;; instantly display current keystrokes in mini buffer
(setq echo-keystrokes 0.02)
;; auto-indent on RET
(define-key global-map (kbd "RET") 'newline-and-indent)
;; alternate binding to search next occurrence with isearch without
;; exiting isearch
(define-key isearch-mode-map (kbd "S-<return>") 'isearch-repeat-forward)
(define-key isearch-mode-map (kbd "M-S-<return>") 'isearch-repeat-backward)
;; Make <escape> quit as much as possible
(define-key minibuffer-local-map (kbd "<escape>") 'keyboard-escape-quit)
(define-key evil-visual-state-map (kbd "<escape>") 'keyboard-quit)
(define-key minibuffer-local-ns-map (kbd "<escape>") 'keyboard-escape-quit)
(define-key minibuffer-local-completion-map (kbd "<escape>") 'keyboard-escape-quit)
(define-key minibuffer-local-must-match-map (kbd "<escape>") 'keyboard-escape-quit)
(define-key minibuffer-local-isearch-map (kbd "<escape>") 'keyboard-escape-quit)
;; ---------------------------------------------------------------------------
;; evil-leader key bindings
;; ---------------------------------------------------------------------------
;; Universal argument ---------------------------------------------------------
(evil-leader/set-key "u" 'universal-argument)
;; shell command -------------------------------------------------------------
(evil-leader/set-key "!" 'shell-command)
;; applications ---------------------------------------------------------------
(evil-leader/set-key
"ac" 'calc-dispatch
"ad" 'dired
"ai" 'irc
"ap" 'proced
"ase" 'eshell
"asi" 'shell
"au" 'undo-tree-visualize)
;; buffers --------------------------------------------------------------------
(evil-leader/set-key
"bb" 'spacemacs/alternate-buffer ;; switch back and forth between two last buffers
"bd" 'delete-current-buffer-file
"be" 'spacemacs/safe-erase-buffer
"bK" 'kill-other-buffers
"bk" 'ido-kill-buffer
"b C-k" 'kill-matching-buffers-rudely
"bn" 'switch-to-next-buffer
"bp" 'switch-to-prev-buffer
"bR" 'spacemacs/safe-revert-buffer
"br" 'rename-current-buffer-file
"bw" 'toggle-read-only)
;; Cycling settings -----------------------------------------------------------
(evil-leader/set-key "Tn" 'spacemacs/cycle-spacemacs-theme)
;; describe functions ---------------------------------------------------------
(evil-leader/set-key
"hdf" 'describe-function
"hdk" 'describe-key
"hdm" 'describe-mode
"hdv" 'describe-variable)
;; errors ---------------------------------------------------------------------
(evil-leader/set-key
"en" 'next-error
"ep" 'previous-error)
;; find -----------------------------------------------------------------------
(evil-leader/set-key
"ff" 'ido-find-file
"fg" 'rgrep)
;; file -----------------------------------------------------------------------
(evil-leader/set-key
"fei" 'find-user-init-file
"fes" 'find-spacemacs-file
"fec" 'find-contrib-file
"fed" 'find-dotfile
"fS" 'evil-write-all
"fs" 'evil-write
"fy" 'show-and-copy-buffer-filename)
;; insert stuff ---------------------------------------------------------------
(evil-leader/set-key
"ij" (lambda (count)
"Insert a new line below with no identation."
(interactive "p")
(save-excursion
(evil-move-end-of-line)
(while (> count 0)
(insert "\n")
(setq count (1- count)))))
"ik" 'evil-insert-line-above)
;; format ---------------------------------------------------------------------
;; <SPC> j k key binding for a frequent action: go and indent line below the point
;; <SPC> J split the current line at point and indent it
(evil-leader/set-key
"J" 'sp-split-sexp
"jJ" 'spacemacs/split-and-new-line
"jj" 'sp-newline
"jk" 'evil-goto-next-line-and-indent)
;; navigation -----------------------------------------------------------------
(evil-leader/set-key
"jh" 'spacemacs/push-mark-and-goto-beginning-of-line
"jl" 'spacemacs/push-mark-and-goto-end-of-line)
;; Compilation ----------------------------------------------------------------
(evil-leader/set-key "cc" 'helm-make-projectile)
(evil-leader/set-key "cC" 'compile)
(evil-leader/set-key "cr" 'recompile)
;; narrow & widen -------------------------------------------------------------
(unless (ht-contains? config-system-all-packages 'fancy-narrow)
(evil-leader/set-key
"nr" 'narrow-to-region
"np" 'narrow-to-page
"nf" 'narrow-to-defun
"nw" 'widen))
;; spell check ---------------------------------------------------------------
(evil-leader/set-key
"Sc" 'cofi/helm-flyspell-correct
"Sn" 'flyspell-goto-next-error)
;; toggle ---------------------------------------------------------------------
(evil-leader/set-key
"t8" 'toggle-fill-column-indicator
"tF" 'toggle-frame-fullscreen
"tf" 'fringe-mode
"tl" 'toggle-truncate-lines
"tL" 'visual-line-mode
"tM" 'toggle-frame-maximized
"tn" 'global-linum-mode
"t SPC" 'whitespace-mode)
;; quit -----------------------------------------------------------------------
(evil-leader/set-key
"q s" 'spacemacs/save-buffers-kill-emacs
"q q" 'spacemacs/kill-emacs)
;; window ---------------------------------------------------------------------
;; (evil-leader/set-key "wb" 'evenly-split-window-right)
(evil-leader/set-key
"w2" 'layout-double-columns
"w3" 'layout-triple-columns
"wc" 'delete-window
"wC" 'delete-other-windows
"wd" 'toggle-current-window-dedication
"wH" 'evil-window-move-far-left
"wh" 'evil-window-left
"wJ" 'evil-window-move-very-bottom
"wj" 'evil-window-down
"wK" 'evil-window-move-very-top
"wk" 'evil-window-up
"wL" 'evil-window-move-far-right
"wl" 'evil-window-right
"wM" 'toggle-maximize-centered-buffer
"wm" 'toggle-maximize-buffer
"wo" 'other-frame
"wr" 'rotate-windows
"wR" 'rotate-windows-backward
;; "wv" 'evenly-split-window-below)
"ws" 'split-window-below
"w-" 'split-window-below
"wS" 'spacemacs/resize-window-overlay-map
"wU" 'winner-redo
"wu" 'winner-undo
"wv" 'split-window-right
"w/" 'split-window-right
"ww" 'other-window)
;; text -----------------------------------------------------------------------
(evil-leader/set-key
"zx=" 'spacemacs/reset-font-size
"zx+" 'spacemacs/scale-up-font
"zx-" 'spacemacs/scale-down-font
"xdw" 'delete-trailing-whitespace
"xtc" 'transpose-chars
"xtl" 'transpose-lines
"xtw" 'transpose-words
"xU" 'upcase-region
"xu" 'downcase-region
"xwC" 'count-words-analysis
"xwc" 'count-words-region)
;; google translate -----------------------------------------------------------
(evil-leader/set-key
"xgl" 'set-google-translate-languages)
;; Lisps ----------------------------------------------------------------------
(evil-leader/set-key-for-mode 'emacs-lisp-mode
"mhd" 'elisp-slime-nav-describe-elisp-thing-at-point
"mg" 'elisp-slime-nav-find-elisp-thing-at-point
"mta" 'spacemacs/ert-run-tests-buffer
"mtf" 'ert)