400 lines
8.7 KiB
EmacsLisp
400 lines
8.7 KiB
EmacsLisp
;;; init-kbd.el --- keybindings -*- lexical-binding: t -*-
|
|
|
|
;;; Commentary:
|
|
|
|
;;; Code:
|
|
|
|
;; god-mode
|
|
(general-def god-local-mode-map
|
|
"i" 'god-mode-all
|
|
"[" 'backward-paragraph
|
|
"]" 'forward-paragraph
|
|
"." 'repeat
|
|
"y" 'yank
|
|
"C-c C-<f12>" 'scratch-buffer
|
|
"z" 'avy-goto-char
|
|
"'" 'avy-goto-word-1
|
|
"<f2>" 'open-init-file)
|
|
|
|
;; g for gptel
|
|
(general-def
|
|
:prefix "C-c g"
|
|
"o" 'gptel
|
|
"m" 'gptel-menu
|
|
"s" 'gptel-send
|
|
"a" 'gptel-agent
|
|
"t" 'gptel-tools)
|
|
|
|
(general-def gptel-mode-map
|
|
"C-c C-s" 'my-gptel-save-session
|
|
"C-c C-k" 'gptel-abort)
|
|
|
|
;; u for ui
|
|
(general-def
|
|
:prefix "C-c u"
|
|
"l" 'global-tab-line-mode
|
|
"d" 'disable-theme
|
|
"R" 'rainbow-mode
|
|
"b" 'indent-bars-mode
|
|
"t" 'consult-theme
|
|
"c" 'my-color-picker
|
|
"f" 'describe-face
|
|
"r" 'rainbow-delimiters-mode
|
|
"k" 'keycast-header-line-mode
|
|
"w" 'global-whitespace-mode)
|
|
|
|
;; f for find and consult command
|
|
(general-def
|
|
:prefix "C-c f"
|
|
"r" 'consult-recent-file
|
|
"f" 'consult-fd
|
|
"g" 'consult-ripgrep
|
|
"e" 'consult-flycheck
|
|
"l" 'consult-locate
|
|
"h" 'consult-fd-home
|
|
"m" 'consult-man
|
|
"d" 'my-open-current-directory
|
|
"j" 'consult-jinx
|
|
"k" 'consult-kmacro
|
|
"o" 'consult-outline
|
|
"i" 'consult-info)
|
|
|
|
;; p for project
|
|
(general-def
|
|
:prefix "C-x p"
|
|
"b" 'consult-project-buffer
|
|
"E" 'eat-project
|
|
"r" 'my-consult-ripgrep-project
|
|
"R" 'project-query-replace-regexp
|
|
"v" 'magit-project-status
|
|
"V" 'project-vc-dir
|
|
"a" 'my-gptel-agent-project
|
|
"i" 'projectile-ibuffer)
|
|
|
|
;; v for version control
|
|
(general-def
|
|
:prefix "C-x v"
|
|
"=" 'magit-diff-buffer-file
|
|
"c" 'magit-clone
|
|
"i" 'magit-init
|
|
"l" 'magit-log-buffer-file
|
|
"h" 'magit-log-buffer-file)
|
|
|
|
;; t for modes toggle
|
|
(general-def
|
|
:prefix "C-c t"
|
|
"f" 'flycheck-mode
|
|
"j" 'my-jinx-smart-toggle
|
|
"g" 'gptel-mode
|
|
"h" 'global-diff-hl-mode)
|
|
|
|
;; o for org-mode
|
|
(general-def
|
|
:prefix "C-c o"
|
|
"f" 'consult-notes
|
|
"s" 'consult-org-agenda
|
|
"g" 'consult-notes-search-in-all-notes
|
|
"C" 'calendar
|
|
"c" 'org-capture
|
|
"d" 'denote
|
|
"r" 'denote-rename-file-date
|
|
"R" 'denote-rename-file
|
|
"m" 'my-denote-open-metanote
|
|
"q" 'org-ql-search)
|
|
|
|
;; j for journal
|
|
(general-def
|
|
:prefix "C-c j"
|
|
"o" 'my-denote-journal-open-entry
|
|
"n" 'denote-journal-new-or-existing-entry)
|
|
|
|
;; m for media
|
|
(general-def
|
|
:prefix "C-c m"
|
|
"n" 'emms-next
|
|
"p" 'emms-previous
|
|
"b" 'emms-browser
|
|
"s" 'emms-start
|
|
"q" 'emms-stop
|
|
"P" 'emms-pause
|
|
"S" 'emms-toggle-single-track
|
|
"l" 'emms-playlist-mode-switch-buffer
|
|
"d" 'emms-play-directory)
|
|
|
|
;; d for dired
|
|
(general-def
|
|
:prefix "C-c d"
|
|
"a" 'dirvish-quick-access
|
|
"s" 'dirvish-side
|
|
"h" 'dirvish-history-menu
|
|
"f" 'dirvish-fd
|
|
"F" 'dirvish-fd-switches-menu
|
|
"t" 'trashed
|
|
"d" 'discomfort)
|
|
|
|
;; x for some other command
|
|
(general-def
|
|
:prefix "C-c x"
|
|
"e" 'eshell
|
|
"E" 'eat
|
|
"p" 'proced
|
|
"b" 'benchmark-init/show-durations-tree
|
|
"B" 'benchmark-init/show-durations-tabulated
|
|
"s" 'syncthing)
|
|
|
|
;; scratch buffer
|
|
(if *is-mac*
|
|
(general-def "C-c <f12>" 'scratch-buffer)
|
|
(general-def "C-c <delete>" 'scratch-buffer))
|
|
|
|
;; dired
|
|
(general-def (dired-mode-map dirvish-mode-map)
|
|
"s" 'dirvish-quicksort
|
|
"h" 'dirvish-history-menu
|
|
"M-," 'scroll-other-window-down
|
|
"M-." 'scroll-other-window
|
|
"<mouse-2>" 'emms-play-dired
|
|
"C-c m a" 'emms-add-dired
|
|
"<down>" 'my-dired-next-line
|
|
"C-n" 'my-dired-next-line
|
|
"n" 'my-dired-next-line
|
|
"b" 'dired-up-directory
|
|
"C-b" 'backward-char
|
|
"C-f" 'forward-char
|
|
"<right>" 'dired-find-file
|
|
"<left>" 'dired-up-directory
|
|
"C-/" 'dired-undo
|
|
"<SPC>" 'my-dirvish-layout-toggle)
|
|
|
|
(general-def (dired-mode-map dirvish-mode-map)
|
|
:prefix "C-c d"
|
|
"u" 'dirvish-setup-menu
|
|
"r" 'dirvish-renaming-menu
|
|
"v" 'dirvish-vc-menu
|
|
"m" 'dirvish-mark-menu
|
|
"i" 'dirvish-file-info-menu
|
|
"y" 'dirvish-yank-menu)
|
|
|
|
;; magit
|
|
(general-def (magit-mode-map tokei-mode-map)
|
|
"C-<tab>" 'my-magit-toggle-parent-section)
|
|
|
|
;; sly
|
|
(general-def (sly-mode-map sly-editing-mode-map)
|
|
"M-p" 'backward-paragraph
|
|
"M-n" 'forward-paragraph)
|
|
|
|
(general-def sly-prefix-map
|
|
"M-p" 'sly-pprint-eval-last-expression
|
|
"C-p" 'sly-previous-note
|
|
"C-n" 'sly-next-note)
|
|
|
|
;; vterm
|
|
(general-def vterm-mode-map
|
|
"M-]" nil
|
|
"C-q" 'vterm-send-next-key)
|
|
|
|
;; eat
|
|
(general-def (eat-semi-char-mode-map
|
|
eat-line-mode-map
|
|
eat-char-mode-map
|
|
eat-eshell-semi-char-mode-map
|
|
eat-eshell-char-mode-map)
|
|
"M-[" nil
|
|
"M-]" nil)
|
|
|
|
;; embark
|
|
(general-def embark-file-map
|
|
"d" 'consult-directory-externally
|
|
"p" 'emms-play-dired)
|
|
|
|
(general-def minibuffer-local-map
|
|
"C-c C-e" 'embark-export)
|
|
|
|
;; completion
|
|
(general-def completion-list-mode-map
|
|
"M-n" 'minibuffer-next-completion
|
|
"M-p" 'minibuffer-previous-completion)
|
|
|
|
;; markdown
|
|
(general-def markdown-mode-map
|
|
"M-p" nil
|
|
"M-n" nil)
|
|
|
|
;; org-mode
|
|
(general-def org-mode-map
|
|
"C-<tab>" 'org-cycle-parent-subtree
|
|
"M-g i" 'consult-outline
|
|
"M-g M-i" 'consult-outline
|
|
"C-c t l" 'org-toggle-link-display
|
|
"M-{" 'backward-paragraph
|
|
"M-}" 'forward-paragraph
|
|
"C-," 'crux-duplicate-current-line-or-region
|
|
"C-c o l" 'denote-link
|
|
"C-c o L" 'denote-org-link-to-heading
|
|
"C-c o b" 'denote-backlinks
|
|
"C-c o B" 'denote-org-backlinks-for-heading
|
|
"C-c o t" 'my-org-tree-slide-start)
|
|
|
|
;; org-tree-slide-mode
|
|
(general-def org-tree-slide-mode-map
|
|
"<left>" 'org-tree-slide-move-previous-tree
|
|
"<right>" 'org-tree-slide-move-next-tree
|
|
"C-c o t" 'my-org-tree-slide-stop
|
|
"ESC" 'my-org-tree-slide-stop
|
|
"q" 'my-org-tree-slide-stop)
|
|
|
|
;; hs-hide-mode
|
|
(general-def hs-minor-mode-map
|
|
"C-c h" 'hs-toggle-hiding
|
|
"C-c H" 'hs-hide-all
|
|
"C-c S" 'hs-show-all)
|
|
|
|
;; calendar
|
|
(general-def calendar-mode-map
|
|
"RET" 'denote-journal-calendar-find-file)
|
|
|
|
;; ibuffer
|
|
(general-def ibuffer-mode-map
|
|
"h k" 'my-persp-remove-marked-ibuffers
|
|
"h A" 'my-persp-set-marked-ibuffers
|
|
"h a" 'my-persp-add-marked-ibuffers)
|
|
|
|
;; multiple-cursor
|
|
(general-def mc/keymap
|
|
"<return>" 'newline)
|
|
|
|
;; emms
|
|
(general-def emms-playlist-mode-map
|
|
"<prior>" 'emms-previous
|
|
"<next>" 'emms-next
|
|
"C-c C-s" 'emms-history-save)
|
|
|
|
;; perspective
|
|
(general-def persp-mode-map
|
|
"C-c p c" nil
|
|
"C-c p d" 'persp-kill
|
|
"C-x M-b" 'persp-ibuffer)
|
|
|
|
;; info
|
|
(general-def Info-mode-map
|
|
"M-n" 'forward-paragraph)
|
|
|
|
;; diff
|
|
(general-def diff-mode-map
|
|
"M-o" 'other-window)
|
|
|
|
;; discomfort
|
|
(general-def discomfort-mode-map
|
|
"p" 'previous-line
|
|
"P" 'discomfort-poweroff)
|
|
|
|
;; eww
|
|
(general-def eww-mode-map
|
|
"M-n" 'forward-paragraph
|
|
"M-p" 'backward-paragraph)
|
|
|
|
;; global map with C-c prefix
|
|
(general-def
|
|
:prefix "C-c"
|
|
"c" 'hydra-multiple-cursors/body
|
|
"r" 'restart-emacs
|
|
"e" 'er/expand-region
|
|
"s" 'consult-line
|
|
"a" 'org-agenda
|
|
"l" 'org-store-link
|
|
"k" 'comment-line
|
|
"K" 'comment-kill
|
|
"C-s" 'consult-focus-lines)
|
|
|
|
;; global map
|
|
(general-def
|
|
|
|
;; god-mode
|
|
"M-i" 'god-mode-all
|
|
|
|
;; buffer, file, and window
|
|
"<f2>" 'open-init-file
|
|
"<mouse-4>" 'previous-buffer
|
|
"<mouse-5>" 'next-buffer
|
|
"M-[" 'previous-buffer
|
|
"M-]" 'next-buffer
|
|
"C-x C-b" 'ibuffer-other-window
|
|
"C-x K" 'crux-kill-other-buffers
|
|
"C-x b" 'consult-buffer
|
|
"C-x C-1" 'delete-other-windows
|
|
"C-x C-2" 'split-window-below
|
|
"C-x C-3" 'split-window-right
|
|
"C-x C-0" 'delete-window
|
|
|
|
;; edit
|
|
"M-c" 'capitalize-dwim
|
|
"M-u" 'upcase-dwim
|
|
"M-l" 'downcase-dwim
|
|
"C-," 'crux-duplicate-current-line-or-region
|
|
"C-<backspace>" 'crux-kill-line-backwards
|
|
"M-y" 'consult-yank-from-kill-ring
|
|
"C-c <backspace>" 'hungry-delete-backward
|
|
"C-c C-<backspace>" 'hungry-delete-forward
|
|
"M-P" 'drag-stuff-up
|
|
"M-N" 'drag-stuff-down
|
|
"M-F" 'drag-stuff-right
|
|
"M-B" 'drag-stuff-left
|
|
"C-M-SPC" 'er/mark-symbol
|
|
"M-@" 'er/mark-word
|
|
"C-S-<mouse-1>" 'mc/add-cursor-on-click
|
|
|
|
;; undo
|
|
"C-/" 'undo-fu-only-undo
|
|
"C-?" 'undo-fu-only-redo
|
|
"C-x u" 'vundo
|
|
|
|
;; navigate
|
|
"M-p" 'backward-paragraph
|
|
"M-n" 'forward-paragraph
|
|
"<mouse-2>" 'xref-find-definitions-at-mouse
|
|
"C-M-;" 'avy-goto-char
|
|
"C-M-'" 'avy-goto-word-1
|
|
"M-g g" 'avy-goto-line
|
|
"M-g M-g" 'consult-goto-line
|
|
"M-g i" 'consult-imenu
|
|
"M-g I" 'consult-imenu-multi
|
|
"M-g M-i" 'consult-imenu
|
|
|
|
;; window
|
|
"C-M-<left>" 'shrink-window-horizontally
|
|
"C-M-<right>" 'enlarge-window-horizontally
|
|
"C-M-<down>" 'shrink-window
|
|
"C-M-<up>" 'enlarge-window
|
|
"M-`" 'popper-toggle
|
|
"C-M-=" 'popper-toggle-type-delete-other-window
|
|
"M-o" 'other-window
|
|
"<f10>" 'esw/swap-two-windows
|
|
|
|
;; other
|
|
"C-x r b" 'consult-bookmark
|
|
"C-;" 'embark-act)
|
|
|
|
(cond
|
|
(*is-android*
|
|
(general-def
|
|
"C-M-w" 'popper-toggle-type-delete-other-window))
|
|
(*is-linux*
|
|
(general-def
|
|
"M-S-SPC" 'xdg-launcher-run-app))
|
|
(t nil))
|
|
|
|
;; expand region
|
|
(setq expand-region-reset-fast-key "r")
|
|
(setq expand-region-contract-fast-key "c")
|
|
|
|
;; save-some-buffer时diff更改
|
|
(add-to-list 'save-some-buffers-action-alist
|
|
(list "d"
|
|
(lambda (buffer) (diff-buffer-with-file (buffer-file-name buffer)))
|
|
"show diff between the buffer and its file"))
|
|
|
|
(provide 'init-kbd)
|
|
|
|
;;; init-kbd.el ends here
|