keybindings.el 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. (general-define-key
  2. :keymaps 'modal/emacs-map
  3. "M-q" 'modal/enable-normal
  4. "M-e" 'modal/enable-emacs)
  5. (setq modal/normal-bare-map (make-sparse-keymap))
  6. (general-define-key
  7. :keymaps 'modal/normal-bare-map
  8. "p" 'previous-line
  9. "P" 'scroll-down-command
  10. "n" 'next-line
  11. "N" 'scroll-up-command
  12. "b" 'backward-char
  13. "B" 'backward-word
  14. "o" 'forward-char
  15. "O" 'forward-word
  16. "a" 'beginning-of-line
  17. "e" 'end-of-line)
  18. (setq modal/normal-map (make-composed-keymap (list (copy-keymap modal/emacs-map) (copy-keymap modal/normal-bare-map)) (make-normal-sparse-keymap)))
  19. (general-define-key
  20. :keymaps 'modal/normal-map
  21. "q" 'modal/enable-insert
  22. "Q" 'edit/insert-beginning-of-line
  23. "d" 'edit/insert-after
  24. "D" 'edit/insert-end-of-line
  25. "r" 'edit/set-region
  26. "R" 'edit/set-region-line
  27. "J" 'edit/copy-whole-line
  28. "k" 'delete-char
  29. "K" 'kill-whole-line
  30. "l" 'yank
  31. "L" 'edit/yank-line
  32. "f" 'swiper
  33. "/" 'undo-tree-undo
  34. "\\" 'undo-tree-redo
  35. "s" 'edit/open-line
  36. "S" (lambda() (interactive) (edit/open-line) (modal/enable-insert))
  37. "w" 'edit/open-line-above
  38. "W" (lambda() (interactive) (edit/open-line-above) (modal/enable-insert))
  39. "g" nil
  40. "g o" 'isearch-forward
  41. "g b" 'isearch-backward
  42. "g c" 'avy-goto-char
  43. "g l" 'avy-goto-line)
  44. (setq modal/region-map (make-composed-keymap (list (copy-keymap modal/emacs-map) (copy-keymap modal/normal-bare-map)) (make-normal-sparse-keymap)))
  45. (general-define-key
  46. :keymaps 'modal/region-map
  47. "h" (lambda() (interactive) (kill-region (region-beginning) (region-end)) (modal/enable-insert))
  48. "j" (lambda() (interactive) (copy-region-as-kill (region-beginning) (region-end)) (modal/enable-normal))
  49. "k" (lambda() (interactive) (kill-region (region-beginning) (region-end)) (modal/enable-normal))
  50. "l" 'edit/yank-region
  51. "C-g" (lambda() (interactive) (pop-mark) (modal/enable-normal))
  52. "M-q" (lambda() (interactive) (pop-mark) (modal/enable-normal))
  53. "r" 'er/expand-region
  54. "TAB" (lambda() (interactive) (indent-region (region-beginning) (region-end)) (modal/enable-normal))
  55. "<tab>" (lambda() (interactive) (indent-region (region-beginning) (region-end)) (modal/enable-normal))
  56. "g" nil
  57. "g o" 'isearch-forward
  58. "g b" 'isearch-backward
  59. ";" 'comment-or-uncomment-region
  60. "s" nil
  61. "m" (lambda() (interactive) (modal/multiple-cursors-mode 1))
  62. "s (" (lambda() (interactive) (surround-region "(" ")") (modal/enable-normal))
  63. "s )" (lambda() (interactive) (surround-region "(" ")") (modal/enable-normal))
  64. "s {" (lambda() (interactive) (surround-region "{" "}") (modal/enable-normal))
  65. "s }" (lambda() (interactive) (surround-region "{" "}") (modal/enable-normal))
  66. "s [" (lambda() (interactive) (surround-region "[" "]") (modal/enable-normal))
  67. "s ]" (lambda() (interactive) (surround-region "[" "]") (modal/enable-normal))
  68. "s \"" (lambda() (interactive) (surround-region "\"" "\"") (modal/enable-normal))
  69. "s '" (lambda() (interactive) (surround-region "'" "'") (modal/enable-normal)))
  70. (setq modal/insert-map (copy-keymap modal/emacs-map))
  71. (general-define-key
  72. "C-x =" 'macro-make-function)
  73. (general-define-key
  74. :keymaps 'company-active-map
  75. "<tab>" 'company-complete
  76. "TAB" 'company-complete)
  77. (general-create-definer general-leader-define-key
  78. :prefix "C-c")
  79. (general-leader-define-key
  80. "RET" 'eshell-toggle
  81. "<return>" 'eshell-toggle
  82. "e b" 'eval-buffer
  83. "e e" 'eval-expression)
  84. (add-hook 'eshell-mode-hook (lambda()
  85. (interactive)
  86. (general-leader-define-key
  87. :keymaps 'eshell-mode-map
  88. "RET" 'eshell-toggle
  89. "<return>" 'eshell-toggle)))
  90. (setq modal/multiple-cursors-map (make-normal-sparse-keymap))
  91. (general-define-key
  92. :keymaps 'modal/multiple-cursors-map
  93. "n" 'mc/mark-next-like-this
  94. "p" 'mc/mark-pop
  95. "a" 'mc/mark-all-like-this
  96. "r" 'mc/mark-in-region
  97. "q" (lambda() (interactive) (modal/multiple-cursors-mode 0))
  98. "M-q" (lambda() (interactive) (modal/multiple-cursors-mode 0))
  99. "C-g" (lambda() (interactive) (modal/multiple-cursors-mode 0)))
  100. (define-minor-mode modal/multiple-cursors-mode nil nil nil modal/multiple-cursors-map
  101. (if modal/multiple-cursors-mode
  102. (raise-minor-mode-map-alist 'modal/multiple-cursors-mode)))