BIBLIOGRAPHY
โEmacs-Evil/Evil.โ (2017) 2025. Evil. https://github.com/emacs-evil/evil.
ํ์คํ ๋ฆฌ
- emacs-evil ์ด๋ผ๊ณ ์ด๋ฆ์ ํ๋๊ฒ ์ข์๊ฒ ๊ฐ์.
- ๊น๋ค ๊น์ด. ์จ์๊ทธ๋ฆผ์ฐพ๊ธฐ ๋ณด๋ฌผ์ฐพ๊ธฐ ์๋๊ฐ
- ์ฝ๋ฉ์ ํ๋ค ๋ณด๋ ํ์ํ ํค๋ฅผ ์๊ฒ ๋๋ค. ๊ทธ๋์ ์์ฐ์ค๋ฝ๊ฒ
์ฌ๊ธฐ๊ฒ ์ง์คํ๊ฒ ๋๋ค. ๋๋ผ์ด ์ผ์ด๋ค.
- ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ ์ ์๋ ๋ด์ฉ์ด๋ค. ๊ทผ๋ฐ ํด์ผ ํ๋ค. ๊ทธ๋์ ์ผ๋จ
์จ์์ ์ฌ์๋ค. ๊ฑฐ๋ ์๋ ์๋ค. ๊ฐ์ผ ํ๋ค. ํ ์คํธ ๋ง์คํฐ๋ก์ ์์ ๋ฅผ ์ป์ผ๋ ค๋ฉด ์ผ๋จ ํธ์ง ๋ชจ๋๋ฅผ ์ดํดํด์ผ ํ๋ค. ์ด๋งฅ์ค์์ ์ ๊ณตํ๋ ํธ์ง ๋ชจ๋๋ฅผ ์์ด ์ฐ๋ ๊ฒ๋ ์ข์ง๋ง EVIL ์ ๊ฒฝํ์ ํด์ผ ํ๋ค.
emacs-evil/evil
(โEmacs-Evil/Evilโ [2017] 2025) The extensible vi layer for Emacs.
#ํค์๋ evil
- @ํ์๋์๋ธ๋์ค HowardAbrams ๊ตฌ๋ฃจ ๋ฆฌํฐ๋ ์ดํธ ์ด๋งฅ์ค - hamacs (2025-02-20)
- #๋ชจ์: #์ด๋ธ #ํธ์ง (2023-06-15)
- #์ด๋ธ: #ํํ ๋ฆฌ์ผ - Evil-Tutor (2024-01-31)
- @wandersoncferreira ยงevil-dot-doom #๋ ์ด๋งฅ์ค #์ด๋ธ #ํํ ๋ฆฌ์ผ (2024-01-31)
- #์ด๋ธ: #๋น๊ณจํ #ํค๋ณด๋ #๊ฒ์ #์ฑ๋ฆฐ์ง (2024-07-04)
- #์ ๊ทํํ์: ์ ๊ท์ ๊ฒ์ ์ผ๋ถ ํ ์คํธ ๋ณ๊ฒฝ (2024-09-15)
- #์ด๋ธ: #์นํธ์ํธ (2024-09-27)
- #์ด๋งฅ์ค ๋ฉํฐ์ปค์ evil-mc evil-multiedit (2024-09-27)
- ยงevil-owl ์ด๋งฅ์ค ๋ ์ง์คํฐ ๋งํฌ ๊ด๋ฆฌ (2025-03-20)
- ์ฝ์ง ์ด๋งฅ์ค ๋งค๋ด์ผ ํด๋ก์ ์ด๋ธ - emacs clojure evil ide (2025-03-21)
- #์ฝ๋ํด๋ฉ ยงvimish-fold ยงts-fold ยงhideshow - ๋ ์ด๋งฅ์ค ๋ชจ๋ (2025-03-23)
- @emacs-evil: ยงevil-collection (2025-04-23)
- #LLM: evil ๋ผ์ธ ์ญ์ ์ ์นํ (2025-04-18)
ํต์ฌ๊ต๋ณธ #๋ ์ด๋งฅ์ค: #์ด๋ธ #ํธ์ง #ํํ ๋ฆฌ์ผ
๋ฐ๊พธ์ง ๋ง๊ณ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก ์ปค๋ฒํ๋ฉด ์ข๋ค.
โ*โ โ#โ #์ฌ๋ณผ Symbol Transient State
- EVIl ๊ด๋ จ ํ๋ จ์ ์ข ํ์ด์ผ ๋๋๋ฐ ์ด์ ์์๋ค. ๋์ฅ.
๊ทธ๋ฆฌ๊ณ Spacemacs ์์ ์ ๊ณตํ๋ Transient State ๋ ๋ค ์ด์ ๊ฐ ์๋ค. ํ์ํด์ ์๋ ๊ฒ์ด๋ค. compleseus ๋ ์ด์ด์ ๊ฐ๋ฉด ์์ ํ๋ฉด ๋๋ค. ์ฌ๊ธฐ์ project ๊ฐ projectile ์ ์ฐ๊ฒฐ๋์ด ์๋ค. ์์ ๋ฐ๋.
>
SpaceVim ์ค์นํ๋ฉฐ โ VSpaceCode and Spacemacs ๋น๊ต
TODO Evil Tips Examples
Key | For | Used |
---|---|---|
vip | evil-inner-passage | Very Often |
vis | evil-inner-sentence | Very Often |
gqap | format passage | Very Often |
gqas | format sentence | Often |
ci | replace everything within parens | Sometimes |
dt; | deleting everything until a semicolon | Rare |
cif | evil-cp-inner-form | Rare |
cif
cif
์ด๊ฒ ๋ญ๊ฐ? :: evil-cp-inner-form ํจ์๋ฅผ ํธ์ถํ๋ค. ์ฆ ๊ดํธ ์์ ํผ์ ์๋ผ๋ด๊ธฐ ํ๋ค. ์๋ ๋ฆฌ์คํธ๊ฐ ์๋ค. ์! ์ด ํจ์๋ evil-cleverparens-text-objects ๊ธฐ๋ฅ์ ์ผ๋ถ์ด๋ค. ์ด๊ฒ ๋ ๊น?
>
*
vip vis ๋ฑ ๋ชจ๋ฅด๋ ์ธ๊ณ๊ฐ ์์์ ์๋ค.- Review of evil-mode for emacs. Evil-mode, the extensible vi layer for-
- My emacs clojure journey Ep 1 - Corgi & evil-mode - YouTube
evil-surround
์ด๊ฑธ ๋๋์ด ์ฌ์ฉํ๋ค. ์?!
evil-textobj-line ํ ์คํธ ์ค๋ธ์ ํธ
- VIM https://nolboo.kim/blog/2016/10/13/vim-text-objects-definitive-guide/
- VIM ์์ ํธ์ง์ ํจ๊ณผ์ ์ผ๋ก ํ๋ ค๋ฉด, ๋จ์ํ ๋ฌธ์๋ฅผ ๋์ด์ ๋จ์ด, ๋ฌธ์ฅ, ๋ฌธ๋จ์ ํธ์งํด์ผ ํ๋ค.VIM ์์ ์ด๋ฐ ํ์ด๋ ๋ฒจ์ ์ปจํ ์คํธ๋ฅผ ํ ์คํธ ๊ฐ์ฒด๋ผ๊ณ ํ๋ค.
- VIM ์๋ ์ผ๋ฐ ํ ์คํธ ๊ฐ์ฒด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ํ ํ ์คํธ ๊ฐ์ฒด๊ฐ ์๋ค. ํ ์คํธ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์ฐ๋ฉด VIM ํธ์ง์ด ์์ ํ ์๋ก์ด ๋จ๊ณ์ ์ ํ๋์ ์๋๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
Spacemacs Focus Document
์ฌ๊ธฐ ๋ฌธ์๋ ์ข๋ค.
/home/junghan/sync/man/dotsamples/spacemacs/ghasak-dot-spacemacs/docs/emacs_tips_tricks/multi_cursor.md:
Evil for Viim Style Editing
Evil for Vim Style Editing - Practicalli Spacemacs
2022 evil-emacs forward backward keybinding
์์์ผ ํ ํค ๋ฐ์ธ๋ฉ
M-x
์์ํ๋ผ ๋ฉํ์์ค! M-m
SPC ์ ๊ฐ์. ์คํ์ด์ค๋งฅ์ค root ๋ผ๊ณ ํจ. M-RET
๋ง์ด๋๋ชจ๋ ๋ช
๋ น์
๋
ธ๋ฉ ๋ชจ๋์์ ,
๊ณผ ๊ฐ์. C-g
keyboard-quit :: ์ด๊ฑธ ๋ชฐ๋์๋ค. ์คํ ์ทจ์!!
evil emacs ๋ฅผ ์ ์ฌ์ฉํ๊ธฐ ์ํ ํต์ฌ์?
๋ด ์๊ฐ์๋ evil mode ์ ์๊ด ์์ด ์ํ๋ ์์ ์ ์คํํ ์ ์๋ ์ด๋งฅ์ค ๊ณ ์ ์ ํค ๋ฐ์ธ๋ฉ์ด๋ผ๊ณ ์๊ฐํ๋ค.
vim ์์ ํธ์ง ๋ชจ๋๋ก ์ง์ ํ๋ฉด ๋ฉํ ํค ์กฐํฉ์ด ์๋๋ผ๋ฉด ํ ์ ์๋ ์ผ์ ํ ์คํธ ์ ๋ ฅ์ด๋ค. vim ๋ ์ ๋๋ก ์จ๋ณด์ง ์์ ์ด์ ๋ ๋ชจ๋ ์ ํ์ด ๊ท์ฐฎ์์๋ค.
์ด๋งฅ์ค๋ฅผ ์ ๋๋ก ์จ๋ณด๋ ค๊ณ ํ๋๋ฐโฆ ๊ทธ๋ ๋ค๊ณ ์ด๋งฅ์ค ์ ๋ ฅ ๋ฐฉ์์ ๊ณต๋ถํ๊ธฐ๋ ์ซ๊ณ โฆ ์ ํ ์ต์ ์ EVIL ์ด๋ค. ์คํ์ด์ค๋งฅ์ค๋ ์ฌ๊ธฐ์ ์ถฉ์คํ ์ด๋งฅ์ค์ด๊ณ ๋ง์กฑ์ค๋ฝ๋ค.
์ด๋/์ญ์ /์ถ๊ฐ : ์บ๋ฆญํฐ, ์๋, ๋ผ์ธ ๊ฒ์ undo/redo
๋ฑ. ์ผ๊ด์ฑ ์๋ ๋ฐฉ์์ด ํ์ํ๋ค.
C-r
undo-fu only redo $
end 0
home
- insert ๋ชจ๋ ๋ฐฉํฅํค ๋์ ์ฌ์ฉํ๋๋ก ์ธํ
C-h j k l
C-S backspace
kill line C-w
evil-delete-backward-word C-_
undo-region C-u
undo-fu undo C-r
undo-fu redo C-$
end C-0
home M-h
delete-backward-char M-l
delete-forward-char
adslfjaldksjflk ds asdlkk
;; ํธ์ง ๋ชจ๋ ์, ๋จ์ด ๋จ์๋ก ์ง์ฐ๋ ค๋ฉด C-w ๋ฅผ ์ฐ๋ฉด ๋๋ค ;; char ๋ฅผ ์ง์ฐ๋ ค๋ฉด backspace ๋ฅผ ๋๋ฅด๋ฉด ๋๋ค. ์ด๊ฒ ๋ถํธํ๋ค. ์ถ๊ฐํ์.
alsdkfjlkdsf
w
evil forward word : ์ด๋|๋จ์ด b
evil backward word ์ด๋|๋จ์ด
- all mode
M-DEL
backword-kill-word ์ปค์ ์ด์ ์๋ ๋จ์๋ก ์ญ์ M-d
kill-word M-f
forward word M-b
backward word
๋ด๊ฐ ์ถ๊ฐํ ํค ๋ฐ์ธ๋ฉ์ ์ผ๋ถ์ด๋ค. ๋ชฉ์ ์ ๋ฐฉํฅํค๋ฅผ ์ต์ํ์ผ๋ก ์ค์ด๊ณ ์ผ๊ด์ฑ ์๊ฒ ๋ชจ๋ ๋ณํ์ ์ต์ํ ํ๋ฉด์ ๊ธ์ ์ธ ์ ์๊ฒ ๋ง๋๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด ํธ์ง ๋ชจ๋์์ ์ฐ๋ค๊ฐ ๋ ธ๋ฉ ๋ชจ๋๋ก ๋ฐ๊พธ๊ณ โฆ ์ด ์์ ์ด ๋งค์ฐ ๋ฒ๊ฑฐ๋กญ๋ค. ์ต์ํ์ ๊ธฐ๋ฅ์ ํธ์ง ๋ชจ๋์์๋ ๊ฐ๋ฅํด์ผ ํ๋ค. ํนํ ์ผ๋ฐ์ ์ธ ํธ์ง ๊ธฐ๋ฅ์ ๊ฒฝ์ฐ.
๋คํ์ธ ๊ฒ์ ์ด๋งฅ์ค๋ ์๋น ๋ชจ๋๋ง ์ง์ํ๋๊ฒ ์๋๋ผ๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ์คํ์ด์ค๋งฅ์ค ์๋น ๋ชจ๋ ํ๊ฒฝ์์๋ ๊ธฐ์กด ์ด๋งฅ์ค ํค ๋ฐ์ธ๋ฉ๊ณผ ๋ค๋ฅธ ๋ถ๋ถ์ด ๋ง์์ ๋ง ๋ฃ์ ์๊ฐ ์๋ค.
๊ทธ๋ผ์๋ ํจ์๋ ์ฌ์ ํ ์๊ธฐ์ ์ ๋นํ ๋ง์ถฐ ๋ฃ์ด์ฃผ๋ฉด ํธ์ง, ์ด๋์ด ๋ฌด๋ํ๊ฒ ๊ฐ๋ฅํ๋ค.
evil-escape ๋ ,.
์ผ๋ก ๋งคํํด ๋์๋๋ฐ ๊ด์ฐฎ๋ค. ESC ๋ฅผ ๋๋ฅด๋ ๊ฒ ๋ณด๋ค ๋ฐ๋ฅ ๋๋ฅด๋๊ฒ ํธํ ๋๊ฐ ์๋ค. ์๋ฅผ ๋ค์ด!! ํธ์ง ๋ชจ๋์์ ๋ง์ด๋๋ชจ๋ ๋ช
๋ น์ ์
๋ ฅํ๊ณ ์ถ์ ๋ , . , ์ ๋ฐ๋ค๋ฅ ๋๋ฅด๋ฉด ๊ฐ๋ฅํ๋ค.
๊ทผ๋ฐโฆ M-RET
์ ๋๋ฅด๋ฉด ๋ชจ๋์ ์๊ด ์์ด ๋ง์ด๋๋ชจ๋ ๋ช
๋ น์ด๋ฅผ ์ธ ์ ์๋ค. ๊ทธ๋ผ์๋ evil-escape ๋ ์ธ๋งํ๋ค. ๊ดํ ์๋๊ฒ ์๋๋ค. ์! ์๋ ๋งคํ์ fd ์ ๋์ด ์๋ค. ํ๊ธ ์
๋ ฅ ์ค์๋ ในใ
์ด ์
๋ ฅ๋๋๊นโฆ ์๋ฌธ์ผ๋ก ๋ฐ๊พธ๊ณ ํด์ผ ํ๋ค๋ ๋ง์ด๋ค. ๊ทธ๋ฌ๊ธฐ์ , . ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ๋ ์ข์ ํค ๋งคํ์ด ์์ ์๋ ์๋ค. ํฐ ๊ณ ๋ฏผํ ๊ฒ์ ์๋๋๊น.
(evil-define-key '(normal insert visual) org-mode-map (kbd "C-c h") 'org-insert-heading)
(evil-define-key '(normal insert visual) org-mode-map (kbd "C-c s") 'org-insert-subheading)
;; ํค๋ฉ ์ด๋์ ํธํ๊ฒ ํ์
(define-key org-mode-map (kbd "C-n") 'org-next-visible-heading)
(define-key org-mode-map (kbd "C-p") 'org-previous-visible-heading)
;; ํธ์ง ๋ชจ๋์์ ๋ฐฉํฅํค๋ฅผ ์ปค๋ฒํ๋ ๋ฐฉ๋ฒ
;; evil-mode ์์ ๊ธฐ์กด ํค ๋ฐ์ธ๋ฉ C-k๋ฅผ ์ ๊ฑฐํ๋ค.
;; ๋๋จธ์ง ํค๋ ํฐ ๋ฌธ์ ์์ด์ ๊ทธ๋ฅ ๋๋ค.
(keymap-unset-key [C-k] "evil-mode")
;; insert ๋ชจ๋์์ ๋ฐฉํฅํค๋ก ์ฐ๋๋ก ์ธํ
ํ๋ค. evil-xxx-line ๋์
;; ์ด๋งฅ์ค ๊ธฐ๋ณธ ์ด๋์ผ๋ก ์ธํ
ํ๋ค.
(evil-define-key '(insert) org-mode-map (kbd "C-h") 'left-char)
(evil-define-key '(insert) org-mode-map (kbd "C-l") 'right-char)
(evil-define-key '(insert) org-mode-map (kbd "C-j") 'next-line)
(evil-define-key '(insert) org-mode-map (kbd "C-k") 'previous-line)
;; ์ด์ํ๊ฒ ๊ธฐ์กด ํค ๋ฐ์ธ๋ฉ์ด ์์ง์์ง๋ค. ์ด๊ฑด ๋์ค์ ๋ค์ ํ์.
;; (define-key org-mode-map (kbd "M-h") nil)
;; (define-key org-mode-map (kbd "M-l>") nil)
;; (keymap-unset-key [M-h] "evil-mode")
;; (keymap-unset-key [M-l] "evil-mode")
;; (evil-define-key '(insert) org-mode-map (kbd "M-h") 'delete-backward-char)
;; (evil-define-key '(insert) org-mode-map (kbd "M-l") 'delete-forward-char)
(evil-define-key '(insert) org-mode-map (kbd "C-u") 'undo-fu-only-undo)
(evil-define-key '(insert) org-mode-map (kbd "C-r") 'undo-fu-only-redo)
(evil-define-key '(insert) org-mode-map (kbd "C-0") 'org-begginng-of-line)
(evil-define-key '(insert) org-mode-map (kbd "C-4") 'org-end-of-line)
์ด๋ฏธ์ง ์์ด embark ๋ก ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์.
์ด ๋ฐฉ๋ฒ์ด ์์ผ๋ฉด ์ ๋ง ์ด๋งฅ์ค๋ฅผ ๊ฑฐ์ ๋ฌธ์ํ ํ๊ณ ์ค๋ช ํ๋๋ฐ ์ ๋ฆฌํด์ง๋ค.
which-key toggle
๋๋์ฒด ํค ๋ฐ์ธ๋ฉ์ด ๋ญ์ผ? ๋ญ ์
๋ ฅํด์ผ ์ด๊ฑธ ํ ์ ์๋๊ฑฐ์ผ? M-x
์์ ํธ์ถ ํ ์ ์๋ ํจ์๋ค๋ ์์ง๋งโฆ evil ์
๋ ฅ์ด๋ผ๋๊ฐ ๋ชจ๋ฅด๋ ์ธ์์ด ์๋ค. ๊ทธ๋ฌ๊ธฐ์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ์ฐพ๋ ๋ฐฉ๋ฒ ๊ทธ ์์ฒด์ด๋ค.
which-key ๋ฅผ ํ ๊ธ์ ์ด์ฉํด์ ๊ฐ ๋ ๋ฒจ ๋ณ๋ก ํ์ฌ ์ ๋ ฅ ํ ์ ์๋ ํค๋งต์ ํ์ธํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ์ง๊ธ org ๋ฌธ์๋ฅผ ํธ์ง ์ค์ธ๋ฐ ๋ญ ์ ๋ ฅํด์ผ ๋ญ๊ฐ ๋๋์ง ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด ํ ๊ธ๋ก ๋ฉ๋ด๋ฅผ ๋์ ๋๊ณ ์ ํํ๋ฉด ๋๋ค. ํ๋๋ฒ ํ๋ค๋ณด๋ฉด ์ต์ํด์ง๊ณ ๊ธฐ์ต์ด ๋๊ณ , ๋์ค์๋ ๋ ํธํ ํค๋ก ๋ฐ๊ฟ์ ์ฐ๊ฒ ๋๋ค.
>
์ด๋ฏธ์ง๋ฅผ ๋ณธ๋ค.
>
>
>
>
vim keybindings
translate:: VIM ํต์ฌ ํค๋งต alias:: project:: url:: person:: progress:: [BROKEN LINK: write],
create-at:: [BROKEN LINK: 2022-07-06] week-at:: #2022-W27 editcount:: 2
์ ๋ ฅ๋ชจ๋ i ๋ฅผ ๋์ด์์.
i
: ์ปค์ ์a
: ์ปค์ ๋คI
: ์ค ์ โ i + HomeA
: ์ค ๋o
: ๋น์ค ๋ฃ๊ณ ์ ๋ ฅr
: ํ๊ธ์ ์์ R
: ์์ ๋ชจ๋
-
** ๋ช ๋ น๋ชจ๋์์ ๋ฐฉํฅํค๋ฅผ ๋์ด์์.
:CUSTOM_ID: ๋ช ๋ น๋ชจ๋์์-๋ฐฉํฅํค๋ฅผ-๋์ด์์.
-
* ๋จ์ด ๋จ์ ์ด๋
:CUSTOM_ID: ๋จ์ด-๋จ์-์ด๋
w
: Next wordb
: previous word
-
* ๋ฌธ์ ๋จ์ ์ด๋
:CUSTOM_ID: ๋ฌธ์-๋จ์-์ด๋
h j k l
: arrow keys
-
* ๋ฌธ๋จ ๋จ์ ์ด๋
:CUSTOM_ID: ๋ฌธ๋จ-๋จ์-์ด๋
{
: ๋ฌธ๋จ ์์์ผ๋ก}
: ๋ฌธ๋จ ๋์ผ๋ก
-
* ํ๋ฉด ๋ด์์ ์ด๋
:CUSTOM_ID: ํ๋ฉด-๋ด์์-์ด๋
H
: ํ๋ฉด ๋งจ ์๋กL
: ํ๋ฉด ๋งจ ์๋๋กM
: ํ๋ฉด ๊ฐ์ด๋๋ก
-
* ํ์ด์ง ๋จ์ ์ด๋
:CUSTOM_ID: ํ์ด์ง-๋จ์-์ด๋
ctrl u
: ๋ฐ ํ์ด์ง ์๋กctrl d
: ๋ฐ ํ์ด์ง ์๋๋ก
-
-
** ๋ณต๋ถ์ v ๋ณด๋ค V ๋ฅผ ์ฐ์
:CUSTOM_ID: ๋ณต๋ถ์-v ๋ณด๋ค-v ๋ฅผ-์ฐ์
v
: ์ ํ ๋ชจ๋V
: ์ค ๋จ์ ์ ํ ๋ชจ๋x
: ์ค๋ ค๋๊ธฐd
: ์ญ์ p
: ๋ถ์ฌ๋ฃ๊ธฐ
Move and Kill Editing Keybindings in Emacs
Hungry Delete with S-<backspace> S-<DEL>
์ด๊ฒ ์๋ฒฝํ ์กฐํฉ์ด์๋ค. ๋ฐ์ํ๋ค.
spacemacs.org ์ฐธ๊ณ
home/junghan.spacemacs.d/dot-org/spacemacs.org
jh-editing ์ฐธ๊ณ
home/junghan.spacemacs.d/dot-org/jh-editing.org
iedit
๋นํธ์ธ ์๋. ๊ทธ๋ฌ๋ ์ค์.
iedit - edit multiple regions simultaneously
evil-iedit-state
์ด๊ฑธ๋ก ๋ชปํ ๊ฒ ์๋ค.
๋จผ์ rg-menu ๋ก regex ๊ฒ์์ ํ๋ค์์ wgrep ์ผ๋ก ์ก๊ณ
v ๋๋ฌ์ visual block ์ผ๋ก ์ก๊ณ SPC s e ํ๋ฉด ํ๋์์ด ์กํ๋ค. insert ๋ชจ๋๋ก ๋ณ๊ฒฝํด์ ์์ ํ๋ฉด ๋๋ค.
https://github.com/syl20bnr/evil-iedit-state
TEMP auto-highlight-symbol and evil-visualstar
์คํ์ด์ค๋งฅ์ค์ ์ค์น ๋์ด ์๋ ๋ ํจํค์ง๋ฅผ ๋ณด๋ผ. ์ฅ๋จ์ ์ด ๋ช ํํ๋ค.
โevil-visualstarโ ๋ ๊ธฐ๋ณธ์ ๊บผ์ ธ ์๋ค. ์ผ์ฃผ๋ผ.
์ ์ผ์ค์ผ ํ๋๊ฐ? ๋น์ฃผ์ผ ๋ชจ๋๋ก ์ ํํ ํ ์คํธ๋ง ๋ค๋ฃฐ ์ ์์ผ๋๊น. ์ด๊ฒ ์๋ค๋ฉด ๊ทธ๋ฅ ํ์ดํ ํ๋ฉด ๋๋ค. ์๋๋ฉด ripgrep ๋ ๋๋ค. ํ์ ์๋ค๋ฉด ์ง์ฐ๊ณ . ๋๋๋ก ํ์ดํ ์ํ๋ฉด ํธํ์ง ์๋๊ฐ? ์ง๊ธ ์ด๊ฒ๋ ์ ๋ ฅํ๋ ค๋ฉด ํ๋คํ ๋ฐ
evil-snipe
Description
This layer adds various replacements for vimโs default search functions.
- Alternative implementation of vimโs default search operations.
- Replacement of evil-surround with a two-character search.
- Support for alternative scopes for default search operations.
- Support for alternative motions based on configurable regexps.
Install
Layer
To use this configuration layer, add it to your ~/.spacemacs
. You will need to add evil-snipe
to the existing dotspacemacs-configuration-layers
list in this file.
Improved f and t search behavior
With evil-snipe you can define your own search scope for f
and t
searches which means that you wonโt have to jump to the correct line before searching with f
/ t
/ F
/ T
. And after you have found a match, you can just press f
or t
again afterwards to continue the search. No need to use ;
/ โ,โ.
์ด๋ธ์ค๋์ ์ฌ์ฉํ๋ฉด f
๋ฐ t
๊ฒ์์ ๋ํ ๊ฒ์ ๋ฒ์๋ฅผ ์ง์ ์ ์ํ ์ ์์ผ๋ฏ๋ก f
/ t
/ F
/ T~๋ก ๊ฒ์ํ๊ธฐ ์ ์ ์ฌ๋ฐ๋ฅธ ์ค๋ก ์ด๋ํ์ง ์์๋ ๋ฉ๋๋ค. ์ผ์นํ๋ ํญ๋ชฉ์ ์ฐพ์ ํ์๋ ~์ํ
๋๋ ํฐ~๋ฅผ ๋ค์ ๋๋ฌ ๊ฒ์์ ๊ณ์ํ ์ ์์ต๋๋ค. ๋ฅผ ์ฌ์ฉํ ํ์ ์์ด ~;
/ ~,~๋ฅผ ๋๋ฅด๋ฉด ๋ฉ๋๋ค.
This alternate behavior is disabled by default, to enable it set the layer variable evil-snipe-enable-alternate-f-and-t-behaviors
to t
:
(setq-default dotspacemacs-configuration-layers
'((evil-snipe :variables evil-snipe-enable-alternate-f-and-t-behaviors t)))
Two-character search with s
With the s~/~S
keys you can do a simple search like f~/~t
, but instead of searching for one character, you search for two. This makes the search a lot more precise than regular f~/~t
searches. While you can search forward or backwards in the buffer with /
and ?
, s
/ S
are much easier to reach, donโt require you to press enter and they are precise enough for many common purposes.
S~/S ํค๋ฅผ ์ฌ์ฉํ๋ฉด f~/~t~์ ๊ฐ์ ๊ฐ๋จํ ๊ฒ์์ ์ํํ ์ ์์ง๋ง, ํ ๋ฌธ์๋ฅผ ๊ฒ์ํ๋ ๋์ ๋ ๋ฌธ์๋ฅผ ๊ฒ์ํฉ๋๋ค. ๋ฐ๋ผ์ ์ผ๋ฐ ~f~/~t
๊ฒ์๋ณด๋ค ํจ์ฌ ๋ ์ ํํ๊ฒ ๊ฒ์ํ ์ ์์ต๋๋ค. ๋ฒํผ์์ /
๋ฐ ?~๋ก ์๋ค๋ก ๊ฒ์ํ ์ ์์ง๋ง, ~s
/ S๋ ํจ์ฌ ๋ ์ฝ๊ฒ ์ฐพ์ ์ ์๊ณ , ์ํฐํค๋ฅผ ๋๋ฅผ ํ์๊ฐ ์์ผ๋ฉฐ, ๋ง์ ์ผ๋ฐ์ ์ธ ์ฉ๋๋ก ์ถฉ๋ถํ ์ ํํฉ๋๋ค.
More scopes
Evil-snipe also adds several scope options for searches (set evil-snipe-scope
and evil-snipe-repeat-scope
to one of these, the default value is buffer
):
Value | Description |
---|---|
buffer | search in the rest of the buffer after the cursor (vim-sneak behavior) |
line | search in the current line after the cursor (vim-seek behavior) |
visible | search in the rest of the visible buffer only |
whole-line | same as line , but highlight matches on either side of cursor |
whole-buffer | same as buffer , but highlight all matches in buffer |
whole-visible | same as visible , but highlight all visible matches in buffer |
If you do not want to replace the regular f
/ F
/ t
/ T
behavior, just remove this line from evil-snipe/packages.el
: (evil-snipe-replace-evil)
Symbol groups
With symbol groups you can let a character stand for a regex, for example a group of characters. By adding a pair of (CHAR REGEX)
to the list evil-snipe-aliases
you can search for a regex very simply:
-
Here we set the
[
character to meanall characters [({
in all modes so a search withsa[
would finda[
,a{
ora(
.;; Alias [ and ] to all types of brackets (push '(?\[ "[[{(]") evil-snipe-aliases) (push '(?\] "[]})]") evil-snipe-aliases)
-
Here we set the char
:
to mean โa regex matching python function definitionsโ (but only in python-mode), so by searching withf:fff
you can quickly cycle through all function definitions in a buffer!;; For python style functions (add-hook 'python-mode-hook (lambda () (make-variable-buffer-local 'evil-snipe-aliases) (push '(?: "def .+:") evil-snipe-aliases)))
Key bindings
Key binding | Description |
---|---|
f | search forward for the next entered character and set the cursor to itโs position |
F | search backward for the next entered character and set the cursor to itโs position |
t | search forward for the next entered character and set the cursor before itโs position |
T | search backward for the next entered character and set the cursor before itโs position |
s | search forward for the next entered two characters and set the cursor to itโs position |
S | search backward for the next entered two characters and set the cursor to itโs position |
#๊ด๋ จ๋ ธํธ
์ฝ์ง ์ด๋งฅ์ค ํด๋ก์ ๊ฐ๋ฐ ํ๊ฒฝ
์ฝ์ง ์ด๋งฅ์ค ๋งค๋ด์ผ ํด๋ก์ ์ด๋ธ - emacs clojure evil ide
ํ์๋ ์์ ์จ ha-evil.org ํ๋ฅญํจ
@ํ์๋์๋ธ๋์ค HowardAbrams ๊ตฌ๋ฃจ ๋ฆฌํฐ๋ ์ดํธ ์ด๋งฅ์ค - hamacs
vanilla/hamacs-evil/ha-evil.org
์ ๊ธฐํ ์กฐํฉ์ด ๋ง๋ค. ๊ทธ๋ฌ๋ ์ผ๋จ ๋ ์ด๋งฅ์ค ๋ฐ์ธ๋ฉ์ ์ฌ์ฉํด๋ผ
์์นด์ด๋น
์ ๋ฐ์ ์ธ ๊ฐ์ ๊ฒํ ํ์ by Injae
์ด๋ ๊ฒ ๋ง๋ค. ์ข์ ๊ฒ์ ์จ๋ผ. ์๋ ์ธ์ ๋ ๋ณด๋ ์ฉ๋ฒ์ด ์๋๋ผ.
evil-anzu evil-args evil-collection evil-escape evil-exchange evil-iedit-state evil-indent-plus evil-lion evil-nerd-commenter evil-matchit evil-numbers evil-surround evil-textobj-line evil-unimpaired evil-visual-mark-mode evil-visualstar evil-tutor evil-lisp-state evil-cleverparens
/home/junghan/sync/man/dotsamples/korean/injae-dotfiles/module/+evil.el
์ ๋ฐ์ ์ผ๋ก ์๋น ์์คํ ์ ๊ฒํ ํ ํ์๊ฐ ์๋ค. ์์ฐ๋๊ฒ ๋๋ฌด ๋ง๋ค. ๋ชฐ๋ผ์ ๊ทธ๋ ๋ค. ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ง ๋ง๋ผ! Spacemacs ๊ธฐ๋ณธ์ผ๋ก ๊ฐ์ผ ๋๋ค.
(evil-want-C-u-scroll t)
(evil-symbol-word-search t)
(evil-want-minibuffer t)
(define-key evil-normal-state-map (kbd "q") 'nil) ; evil macro disable
(define-key evil-visual-state-map (kbd "R") 'evil-visual-exchange-corners)
(setq-default evil-kill-on-visual-paste nil)
;; visual mode 'p' command update clipboard problem fix
;; (global-evil-visualstar-mode t) ์๋ ๊ฒ๊ณผ ์๋ ๊ฒ์ ์ฐจ์ด๋?
;;;; string-infraction
;; (use-package evil-string-inflection
;; :config (define-key evil-normal-state-map "gR" 'evil-operator-string-inflection)
;; )
;;;; indent-plus
;;;; evil-surround
; @call-function
; visual mode S- or gS-
; normal mode ys- or yS-
; change surround cs-
; delete surround ds-
; @select area
; call-functionu- - ;ํ์ฌ๋ถํฐ ๋จ์ด ๋๊น์ง
; {call-function}-i- ;ํ์ฌ ๋จ์ด
; {call-function}-s- ;ํ์ฌ ์ค
; @wrap function
; {select-area}-w
; ${target}( ๋ฐ๊พธ๊ณ ์ถ์๊ฑฐ ), ${change}(๋ฐ๋๊ฑฐ)
; ๊ฐ์ธ๊ธฐ: => y-s-i-w-${change}( "(", "{", "[")
; ์ ๋ถ ๊ฐ์ธ๊ธฐ => y-s-s-${change}
; ๋ฐ๊พธ๊ธฐ: => c-s-${target}( "(", "{", "["), ${change}
; ๋ฒ๊ธฐ๊ธฐ: => d-s-${target}( "(", "{", "[")