Vim 8.2 快速参考备忘单的有用集合,可帮助您更快地学习 vim 编辑器。
▼/▶ 光标 ▽/▷ 目标
╭┈┈┈┈┈┈┈┈┈┈┈┈┈ |
├┈┈┈┈┈┈┈┈┈┈┈┈┈ 0 $ ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮
┆ ╭┈┈┈┈┈┈┈┈┈┈ ^ fe ┈┈┈┈┈┈┈┈╮ ┆
┆ ┆ ╭┈┈┈┈┈┈┈ Fo te ┈┈┈┈┈┈┈╮┆ ┆
┆ ┆ ┆╭┈┈┈┈┈┈ To 30| ┈┈┈╮ ┆┆ ┆
┆ ┆ ┆┆ ╭┈┈┈┈ ge w ┈┈┈╮ ┆ ┆┆ ┆
┆ ┆ ┆┆ ┆ ╭┈┈ b e ┈╮ ┆ ┆ ┆┆ ┆
┆ ┆ ┆┆ ┆ ┆ ╭h l╮ ┆ ┆ ┆ ┆┆ ┆
▽ ▽ ▽▽ ▽ ▽ ▽▼ ▼▽ ▽ ▽ ▽ ▽▽ ▽
echo "A cheatsheet from quickReference"
- SCREEN 1 START
╭┈┬┈┈┈┈┈┈┈┈┈▷ #!/usr/bin/python
┆ ┆ ╭┈┈┈▷
┆ ┆ ┆ print("Hello")
┆ ┆ { } ▶ print("Vim")
┆ ┆ ┆ print("!")
┆ ┆ └┈▷
┆ ┆ ╭┈┈┈┬┈┈┈▷ print("Welcome")
G gg H M L k j ▶ print("to")
┆ ┆ └┈▷ print("Quick Reference")
┆ ┆ print("/vim")
┆ ┆
┆ ╰┈┈┈┈┈▷
┆ - SCREEN 1 END
╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈▷ print("SCREEN 2")
| 快捷方式 | 说明 |
|---|---|
h | j | k | l | 方向键 |
<C-u> / <C-d> | 上/下半页 |
<C-b> / <C-f> | 向上/向下翻页 |
| 快捷方式 | 说明 |
|---|---|
b / w | 上一个/下一个单词 |
ge / e | 上一个/下一个词尾 |
| 快捷方式 | 说明 |
|---|---|
0 (zero) / $ | 行的开始/结束 |
^ | 行开头 (非空白) |
| 快捷方式 | 说明 |
|---|---|
Fe / fe | 移动到上一个/下一个e |
To / to | 在上一个/下一个o之前/之后移动 |
| / n| | 转到第一个/n列 |
| 快捷方式 | 说明 |
|---|---|
gg / G | 第一行/最后一行 |
:n | nG | 转到第 n 行 |
} / { | 下一个/上一个空行 |
| 快捷方式 | 说明 |
|---|---|
H / M / L | 上/中/下屏幕 |
zt / zz / zb | 上/中/下这条线 |
| :- | - |
|---|---|
/foo | 向前搜索 |
/foo\c | 向前搜索 (不区分大小写) |
?foo | 向后搜索 |
/\v\d+ | 使用 regex 搜索 |
n | 下一个匹配的搜索模式 |
N | 上一个匹配的搜索 |
* | 向前搜索当前单词 |
# | 向后搜索当前单词 |
:[range]s/{pattern}/{str}/[flags]
| :- | - |
|---|---|
:s/old/new | 先更换 |
:s/old/new/g | 全部替换 |
:s/\vold/new/g | 全部替换为 regex |
:s/old/new/gc | 全部替换_(确认)_ |
:s/old/new/i | 先忽略大小写替换 |
:2,6s/old/new/g | 在 2-6 行之间替换 |
:%s/{pattern}/{str}/[flags]
| :- | - |
|---|---|
:%s/old/new | 先更换 |
:%s/old/new/g | 全部替换 |
:%s/old/new/gc | 全部替换 (确认) |
:%s/old/new/gi | 全部替换 (忽略大小写) |
:%s/\vold/new/g | 全部替换为 regex |
:s/a\|b/xxx\0xxx/g # 将 "a b" 修改为 "xxxaxxx xxxbxxx"
:s/test/\U& file/ # 将 "test" 修改为 "TEST FILE"
:s/\(test\)/\U\1\e file/ # 将 "test" 修改为 "TEST file"
:s/\v([abc])([efg])/\2\1/g # 将 "af fa bg" 修改为 "fa fa gb"
:s/\v\w+/\u\0/g # 将 "bla bla" 修改为 "Bla Bla"
:s/\v([ab])|([cd])/\1x/g # 将 "a b c d" 修改为 "ax bx x x"
:%s/.*/\L&/ # 将 "HTML" 修改为 "html"
:s/\v<(.)(\w*)/\u\1\L\2/g # 将单词的每个首字母大写
:%s/^\(.*\)\n\1/\1/ # 删除重复行
:%s/<\/\=\(\w\+\)\>/\U&/g # 将 HTML 标记转换为大写
:g/^pattern/s/$/mytext # 查找文本并将其附加到末尾
:g/pattern/norm! @i # 在匹配行上运行宏
/^\(.*\)\(\r\?\n\1\)\+$ # 查看重复行
/\v^(.*)(\r?\n\1)+$ # 查看重复行(非常神奇)
:v/./,/./-j # 将空行压缩成空行
:g/<p1>/,/<p2>/d # 从 <p1> 到 <p2> 包含删除
:[range]diffget [bufspec]
:[range]diffput [bufspec]
| 快捷方式 | 说明 |
|---|---|
do / :diffget | 获取(get)差异 |
dp / :diffput | 放差价 |
:dif | 重新扫描差异 |
:diffo | 关闭差异模式 |
:1,$+1diffget | 获取所有差异 |
ZQ | 不做改动就退出 |
请参阅:范围
| 快捷方式 | 说明 |
|---|---|
`^ | 插入模式下光标的最后位置 |
`. | 当前缓冲区的最后更改 |
`" | 最后退出的当前缓冲区 |
`0 | 在上次编辑的文件中 |
'' | 返回当前缓冲区中跳出的行 |
`` | 返回当前缓冲区中跳转的位置 |
`[ | 到先前更改或拉出的文本的开头 |
`] | 到之前更改或拉出的文本的结尾 |
`< | 到最后一个可视化选择的开始 |
`> | 到最后一个可视化选择的结尾 |
ma | 将此光标位置标记为a |
`a | 跳转到光标位置a |
'a | 跳转到位置为 a 的行首 |
d'a | 从当前行删除到标记 a 的行 |
d`a | 从当前位置删除到标记 a 的位置 |
c'a | 将文本从当前行更改为 a 行 |
y`a | 将文本从当前位置拉到 a 的位置 |
:marks | 列出所有当前标记 |
:delm a | 删除标记a |
:delm a-d | 删除标记a、b、c、d |
:delm abc | 删除标记a、b、c |
有了这些基本的语言元素,我们就可以着手构造一些简单的命令了。文本编辑命令的基本语法如下:
动词 介词 名词
下面是一些例子
dip # 删除一个段落: delete inside paragraph
vis # 选取一个句子: visual select inside sentence
ciw # 修改一个单词: change inside word
caw # 修改一个单词: change around word
dtx # 删除文本直到字符“x”(不包括字符“x”): delete to x
dfx # 删除文本直到字符“x”(包括字符“x”): delete forward x