Emacs Pinky를 피하는 방법 : hydra-pinky
12445 단어 emacs-lispHydraEmacs
스크린 샷
hydra-pinky 를 발동하면 미니 버퍼에 적문자의 키 메뉴가 나옵니다. 이 빨간색 디스플레이의 키를 입력하는 동안 언제든지 hydra는 해제되지 않습니다. hydra가 종료하는 조건은, 정의된 빨강 키 이외의 키를 타이프 치거나, 파랑 문자의 "q":quit 를 누른 경우입니다.
hydra-pinky는, vew-mode와 비슷한 컨셉의 동작을 해, 거기로부터 빠지면 보통의 편집 모드에 돌아온다…라고 하는 구조입니다. 키 바인딩을 기억할 필요도 없이 GUI로 스피디하게 키 조작할 수 있는 것은 초보자 Emacser에게는 매우 고맙습니다. 나는 hydra-pinky 외에도 다양한 hydra를 활용하고 있습니다.
Hydra에서 Emacs의 키 바인딩 문제 해결
sequential-command
rubikitch/sequential-command
Emacs를 재부팅하고 C-a C-a C-a하면 줄 머리에 가서 버퍼의 머리에 가서 취소합니다. 한 기능이지만, 쓸데없이 편리합니다.
hydra-pinky에서는 "a", "e"키에 할당됩니다.
window-toggle-division
Window의 세로 분할, 가로 분할을 toggle로 전환합니다.
iflipb: 버퍼 이동
버퍼 이동은
next-buffer
Emacs : 탭을 사용하지 않는 궁극적 인 버퍼 이동화살표 키 취급
Emacser 쪽에서 보면 사도라고 말할 것 같지만, 나는 커서 이동에 화살표 키를 사용하는 경우도 많습니다. 기본은 h, j, k, l을 사용하도록 하고 있어 확실히 화살표 키에 닿으면 hydra-pinky가 사라져 버리므로, 화살표 관계의 조작으로 pinky가 사라지지 않도록 하고 있습니다.
트랙패드 사용 안함
필자의 경우 Macbook을 사용하고 있기 때문에 hydra-pinky 발동 중에 실수로 트랙 패드를 만지면 마음대로 해제되어 버립니다. 그래서 마우스를 사용할 때는 트랙패드를 무효로 하는 설정을 하고 있습니다.
MacBook 트랙패드 사용 안함
설정
(bind-key [f11] 'hydra-pinky/body)
(key-chord-define-global
"::"
(defhydra hydra-pinky (:color red :hint nil)
"
:_0_._1_._2_._3_._o_._S_._x_ :_j_._k_._h_._l_._c_._a_._e_._b_._SPC_._m_._w_._s_._/_ :_n_._p_._u_._t_ :_<_-_:_-_>_ :_q_uit"
;; window
("0" delete-window)
("1" delete-other-windows)
("2" split-window-below)
("3" split-window-right)
("o" other-window-or-split)
("S" window-swap-states)
("x" window-toggle-division)
;; page
("a" seq-home)
("e" seq-end)
("j" next-line)
("k" previous-line)
("l" forward-char)
("h" backward-char)
("c" recenter-top-bottom)
("<down>" next-line)
("<up>" previous-line)
("<right>" forward-char)
("<left>" backward-char)
("<C-up>" backward-paragraph)
("<C-down>" forward-paragraph)
("<C-left>" left-word)
("<C-right>" right-word)
("b" scroll-down-command)
("SPC" scroll-up-command)
("m" set-mark-command)
("w" avy-goto-word-1)
("s" swiper-isearch-region)
;; git
("n" git-gutter:next-hunk)
("p" git-gutter:previous-hunk)
("u" git-gutter:popup-hunk)
("t" git-gutter:toggle-popup-hunk)
;; buffer
("/" kill-buffer)
(":" counsel-switch-buffer)
("<" iflipb-previous-buffer)
(">" iflipb-next-buffer)
;; quit
("q" nil)))
;; sequential-command
(use-package sequential-command-config
:commands sequential-command-setup-keys
:hook (after-init . sequential-command-setup-keys))
;; other-window-or-split
(bind-key
"C-q"
(defun other-window-or-split ()
"If there is one window, open split window.
If there are two or more windows, it will go to another window."
(interactive)
(when (one-window-p)
(split-window-horizontally))
(other-window 1)))
;; window-toggle-division
(defun window-toggle-division ()
"Replace vertical <-> horizontal when divided into two."
(interactive)
(unless (= (count-windows 1) 2)
(error "Not divided into two!"))
(let ((before-height)
(other-buf (window-buffer (next-window))))
(setq before-height (window-height))
(delete-other-windows)
(if (= (window-height) before-height)
(split-window-vertically)
(split-window-horizontally))
(other-window 1)
(switch-to-buffer other-buf)
(other-window -1)))
;; iflipb
(setq iflipb-wrap-around t)
(setq iflipb-ignore-buffers (list "^[*]" "^magit" "dir]$"))
;; sequential-command
(use-package sequential-command-config
:commands sequential-command-setup-keys
:hook (after-init . sequential-command-setup-keys))
Reference
이 문제에 관하여(Emacs Pinky를 피하는 방법 : hydra-pinky), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/minoruGH/items/de3d47904656f3b50666텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)