Evil
文章目录
Cheat Sheet
ref:
official document
Shortcuts
project
workspace
<SPC> <TAB> .: 手动选择 workspace
文件
搜索整个 project
<SPC> <SPC>
搜索当前文件夹
SPC .SPC f f
buffer
SPC ,: 当前 projectSPC <: 所有 buffer
M-x in evil
<SPC> :
Window
prefix: Ctrl + w
Repeat
.
Buffer
prefix: SPC + ,
File
- prefix: SPC + .
SPC f f
Jump
- go back: Ctrl + o
- definition: g d
- reference: g D
- last change: g ;
Cursor
- word end: e
- back word end: g e
screen scroll 滚动
半屏
- Ctrl + u: up
- Ctrl + d: down
单行
- Ctr + y: up
- Ctr + e: down
Navigation
- j,k
- h,l
(,)
- 句子跳转
Middle 居中
类似 emacs, Ctrl + l
z z: middle 当前行居中z t: top 当前行移动到顶部z b: bottom 当前行移动到底部
insert mode
删除
Ctrl + w
- 删除左侧单词
复制
Y
- 复制到句尾
插件
evil-surround
功能: 文本周围环绕字符和文字处理,eg: (), {}, <em>hello text</em>, "text", 'text'
参考: GitHub - emacs-evil/evil-surround: you will be surrounded (surround.vim for e…
替换
cs<SurroundObject><to-relace object>- cs"' : 把 "" 替换成 ''
删除
ds<SurroundObject>- ds" : 删除双引号""
tag 替换
参考:doomemacs/doomemacs#5921 Evil-surround doesn't replace xml/html tags in doom
- cs"tq :"hello" –> <q>hello</q>
evil-numbers
作用: 数字递增递减
doom emacs: g - 和 g =
参考: GitHub - cofi/evil-numbers: Increment and decrement numbers in Emacs
evil-nerd-commenter
elisp 前缀: evilnc
doom emacs:
gcc- comment one line 注释一行
V +
gcc- 注释多行
取消注释
gcc再次处理一遍即可
- 这里
g是 leader 按键
evil-args
作用: 函数参数编辑 特点:
- 识别以“;”或“,”分割的函数参数
- 需要在()括号内部才能能生效
按键:
Navigate 移动
]a: 下一个 arg[a: 上一个 arg与 evil-easymotion 连用
gsa: 定位下面的 argsgsA: 定位上面的 args
删除
daadia
替换
ciacaa
evil-easymotion
作用: 快速定位附近的 <textobject>, 类似 avy jump
按键:
gs<textobject>gsa: function argsgsk: 上面的行gsj: 下面的行gsf: 下面的字符 char
evil-lion
作用: 用于通过给定字符对齐,左对齐、右对齐 参考: GitHub - edkolev/evil-lion: Evil align operator
按键:
gl<textobject><char>- 通过给定字符 char 的左端对齐
glip=
- left indent text object(inner paragraph) according to "="
gL<textobject><char>- 通过给定字符 char 的右端对齐
evil-snipe
作用:通过给定字符(一个或者两个),快速定位前后文本 参考:GitHub - hlissner/evil-snipe: 2-char searching ala vim-sneak & vim-seek, for … 特性:
- 一般是在同一行内部搜索,存在失败(没有时)
按键:
定位方法:
s/S: 输入两个字符, 向下/向上搜索eg:
sim: 向下搜索 imse<Enter>: 下搜索 e,- 注意:默认输入 2 个字符,只有一个字符,使用<Enter>完成输入
f/F: 输入一个字符搜索- 结果跳转:
f/F
- 结果跳转:
结果跳转
;: 下一个,: 上一个
evil-embrace 和 embrace.el
作用: evil-surround 功能增强
embrace.el
特点:
- 相比于 evil-surround 由添加 surround 功能
功能:
embrace-add
evil-escape
作用: 快速退出一种 vim mode 的方法, eg: 按 "jk" 退出 insert mode 特点:
- 退出按键 "jk", 按下顺序要正确,速度要快
evil-exchange
作用: 两个 textobject 调换位置的方法
eg:
gxegxbge<textobject>: 这个命令要输入两次
evil-indent-plus
evil-vimish-fold
功能: 折叠代码 特点:
- 自带折叠函数
- if else, for 等,需要手动创建折叠
按键:
za: toggle 切换折叠zf: 创建折叠zc: closezo: open
按键
i 和 a 区别
da Vs. di
- di): delete things inside ), 删除()内部的内容
- da): delete a () object, 删除一整个()和内部的内容
r Vs. s Vs. c 区别
参考:What is the difference between s, c and r commands in vi/vim? - Stack Overflow
r, R: 在 normal mode 中替换,replace
- r: replace char
- R: replace to end of line
s, S: 删除后,进入 insert mode, 替换, substitute
- s: substitute char, and insert mode
- S: substitute to end of line(在 vim 中)
c, C: c<textobject>: 删除 textobject 后,进入 insert mode, change
- c: change text object, insert mode
- C: change to end of line, insert mode
- cc: cut line into clipboard, 剪切行,删除行
git, magit
prefix: <SPC> g
代码 diff 跳转
git-gutter
]d- 下一块
[d- 上一块
flycheck error
next error
]e
previous error
[e
插入空白行
上面
[o
下面
]o
跳转 ], [
错误
e: flycheck error 代码错误s: flyspell error 拼写错误
编辑
o: 空白行插入<SPC>: 空白行插入
方法:
m: 方法开始 beginM: 方法结尾 end
d: git-gutter, git diff git 代码修改c:- prog-mode 等,代码中: comment, 注释
- org-mode 中: code, org-babel 代码块
]: section 开头[: section 结尾括号:
): () 的结尾, 未配对的), 注意 : 在两个()中间])按键跳转才能生效(: () 的开头}: {} 的结尾{: {} 的结尾
外部跳转,文件和 buffer 等
b: bufferf: fileF: Framew: workspace
command-line window 和 M-x
emacs 原生按键
删除行
- 在 evil mini buffer 中 C-k 不能使用, 但是 C-K 可以使用
文章作者
上次更新 2022-06-28 (d35cb5b)