|
|
|
@ -2,8 +2,8 @@
|
|
|
|
|
#
|
|
|
|
|
# VIM CHEATSHEET (http://www.vim.org)
|
|
|
|
|
#
|
|
|
|
|
# Version: 2
|
|
|
|
|
# Last Modified: 2018/02/22 23:09
|
|
|
|
|
# Version: 3
|
|
|
|
|
# Last Modified: 2018/02/23 00:56
|
|
|
|
|
#
|
|
|
|
|
# 项目地址:https://github.com/vim/vim
|
|
|
|
|
# 中文文档:http://vimcdoc.sourceforge.net/doc/help.html
|
|
|
|
@ -17,19 +17,19 @@
|
|
|
|
|
# 光标移动
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
h 光标左移,同 Left 键
|
|
|
|
|
j 光标下移,同 Down 键
|
|
|
|
|
k 光标上移,同 Up 键
|
|
|
|
|
l 光标右移,同 Right 键
|
|
|
|
|
h 光标左移,同 <Left> 键
|
|
|
|
|
j 光标下移,同 <Down> 键
|
|
|
|
|
k 光标上移,同 <Up> 键
|
|
|
|
|
l 光标右移,同 <Right> 键
|
|
|
|
|
CTRL-f 下一页
|
|
|
|
|
CTRL-b 上一页
|
|
|
|
|
CTRL-u 上移半屏
|
|
|
|
|
CTRL-d 下移半屏
|
|
|
|
|
0 跳到行首(是数字零,不是字母O),效用等同于 Home 键
|
|
|
|
|
0 跳到行首(是数字零,不是字母O),效用等同于 <Home> 键
|
|
|
|
|
^ 跳到从行首开始第一个非空白字符
|
|
|
|
|
$ 跳到行尾,效用等同于 End 键
|
|
|
|
|
gg 跳到第一行,效用等同于 CTRL+Home
|
|
|
|
|
G 跳到最后一行,效用等同于 CTRL+End
|
|
|
|
|
$ 跳到行尾,效用等同于 <End> 键
|
|
|
|
|
gg 跳到第一行,效用等同于 CTRL+<Home>
|
|
|
|
|
G 跳到最后一行,效用等同于 CTRL+<End>
|
|
|
|
|
nG 跳到第n行,比如 10G 是移动到第十行
|
|
|
|
|
:n 跳到第n行,比如 :10<回车> 是移动到第十行
|
|
|
|
|
w 跳到下一个单词开头 (word: 标点或空格分隔的单词)
|
|
|
|
@ -49,10 +49,20 @@ ge 上一个单词尾
|
|
|
|
|
H 移动到屏幕上部
|
|
|
|
|
M 移动到屏幕中部
|
|
|
|
|
L 移动到屏幕下部
|
|
|
|
|
fx 跳转到下一个为 x 的字符
|
|
|
|
|
Fx 跳转到上一个为 x 的字符
|
|
|
|
|
tx 跳转到下一个为 x 的字符前
|
|
|
|
|
Tx 跳转到上一个为 x 的字符前
|
|
|
|
|
; 跳到下一个 f/t 搜索的结果
|
|
|
|
|
, 跳到上一个 f/t 搜索的结果
|
|
|
|
|
<S-Left> 按住 SHIFT 按左键,向左移动一个单词
|
|
|
|
|
<S-Right> 按住 SHIFT 按右键,向右移动一个单词
|
|
|
|
|
<S-Up> 按住 SHIFT 按上键,向上翻页
|
|
|
|
|
<S-Down> 按住 SHIFT 按下键,向下翻页
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# 插入模式
|
|
|
|
|
# 插入模式:进入退出
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
i 在光标处进入插入模式
|
|
|
|
@ -66,14 +76,43 @@ gi 进入到上一次插入模式的位置
|
|
|
|
|
CTRL-[ 退出插入模式(同 ESC 等价,但更顺手)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# INSERT MODE - 由 i, I, a, A, o, O 等命令进入插入模式后
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
<Up> 光标向上移动
|
|
|
|
|
<Down> 光标向下移动
|
|
|
|
|
<Left> 光标向左移动
|
|
|
|
|
<Right> 光标向右移动
|
|
|
|
|
<S-Left> 按住 SHIFT 按左键,向左移动一个单词
|
|
|
|
|
<S-Right> 按住 SHIFT 按右键,向右移动一个单词
|
|
|
|
|
<S-Up> 按住 SHIFT 按上键,向上翻页
|
|
|
|
|
<S-Down> 按住 SHIFT 按下键,向下翻页
|
|
|
|
|
<PageUp> 上翻页
|
|
|
|
|
<PageDown> 下翻页
|
|
|
|
|
<Delete> 删除光标处字符
|
|
|
|
|
<BS> Backspace 向后删除字符
|
|
|
|
|
<Home> 光标跳转行首
|
|
|
|
|
<End> 光标跳转行尾
|
|
|
|
|
CTRL-w 向后删除单词
|
|
|
|
|
CTRL-o 临时退出插入模式,执行单条命令又返回插入模式
|
|
|
|
|
CTRL-\ CTRL-o 临时退出插入模式(光标保持),执行单条命令又返回插入模式
|
|
|
|
|
CTRL-r 插入寄存器(内部剪贴板编号)内容
|
|
|
|
|
CTRL-r = 插入表达式计算结果
|
|
|
|
|
CTRL-f 自动缩进
|
|
|
|
|
CTRL-v {char} 插入非数字的字面量
|
|
|
|
|
CTRL-v {number} 插入三个数字代表的 ascii 字节
|
|
|
|
|
CTRL-k {ch1} {ch2} 插入 digraph(见 :h digraph),快速输入日文或符号等
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# 文本编辑
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
r 替换当前字符
|
|
|
|
|
R 进入替换模式,直至 ESC 离开
|
|
|
|
|
s 删除光标处字符,并进入插入模式(前可接数量表示删几个字符)
|
|
|
|
|
S 删除光标所在行,并进入插入模式(前可接数量表示删多少行)
|
|
|
|
|
s 替换字符(删除光标处字符,并进入插入模式,前可接数量)
|
|
|
|
|
S 替换行(删除当前行,并进入插入模式,前可接数量)
|
|
|
|
|
cc 改写当前行(删除当前行并进入插入模式),同 S
|
|
|
|
|
cw 改写光标开始处的当前单词
|
|
|
|
|
ciw 改写光标所处的单词
|
|
|
|
@ -81,6 +120,13 @@ caw 改写光标所处的单词,并且包括前后空格(如
|
|
|
|
|
c0 改写到行首
|
|
|
|
|
c^ 改写到行首(第一个非零字符)
|
|
|
|
|
c$ 改写到行末
|
|
|
|
|
ci" 改写双引号中的内容
|
|
|
|
|
ci' 改写单引号中的内容
|
|
|
|
|
ci) 改写小括号中的内容
|
|
|
|
|
ci] 改写中括号中内容
|
|
|
|
|
ci} 改写大括号中内容
|
|
|
|
|
cit 改写 xml tag 中的内容
|
|
|
|
|
c2w 改写下两个单词
|
|
|
|
|
x 删除当前字符,前面可以接数字
|
|
|
|
|
X 向前删除字符
|
|
|
|
|
dd 删除当前行
|
|
|
|
@ -91,6 +137,17 @@ D 删除到行末(同 d$)
|
|
|
|
|
dw 删除当前单词
|
|
|
|
|
diw 删除光标所处的单词
|
|
|
|
|
daw 删除光标所处的单词,并包含前后空格(如果有的话)
|
|
|
|
|
di" 删除双引号中的内容
|
|
|
|
|
di' 删除单引号中的内容
|
|
|
|
|
di) 删除小括号中的内容
|
|
|
|
|
di] 删除中括号中内容
|
|
|
|
|
di} 删除大括号中内容
|
|
|
|
|
dit 删除 xml tag 中的内容
|
|
|
|
|
d2w 删除下两个单词
|
|
|
|
|
dgg 删除到文件头部
|
|
|
|
|
dG 删除到文件尾部
|
|
|
|
|
d} 删除下一段
|
|
|
|
|
d{ 删除上一段
|
|
|
|
|
u 撤销
|
|
|
|
|
CTRL-R 重复
|
|
|
|
|
J 链接多行为一行
|
|
|
|
@ -102,6 +159,8 @@ guiw 将当前单词转成小写
|
|
|
|
|
<< 减少缩进
|
|
|
|
|
>> 增加缩进
|
|
|
|
|
== 自动缩进
|
|
|
|
|
CTRL-a 增加数字
|
|
|
|
|
CTRL-x 减少数字
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
@ -149,13 +208,10 @@ N 向相反方向执行上一次搜索
|
|
|
|
|
# 位置跳转
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
fx 跳转到下一个为 x 的字符
|
|
|
|
|
Fx 跳转到上一个为 x 的字符
|
|
|
|
|
tx 跳转到下一个为 x 的字符前
|
|
|
|
|
Tx 跳转到上一个为 x 的字符前
|
|
|
|
|
; 跳到下一个 f/t 搜索的结果
|
|
|
|
|
, 跳到上一个 f/t 搜索的结果
|
|
|
|
|
CTRL-o 跳转到上一个位置
|
|
|
|
|
CTRL-i 跳转到下一个位置
|
|
|
|
|
CTRL-^ 跳转到 alternate file (当前窗口的上一个文件)
|
|
|
|
|
% 跳转到 {} () [] 的匹配
|
|
|
|
|
gd 跳转到定义
|
|
|
|
|
[[ 跳转到上一个顶层函数(比如C语言以大括号分隔)
|
|
|
|
|
]] 跳转到下一个顶层函数(比如C语言以大括号分隔)
|
|
|
|
@ -165,14 +221,29 @@ gd 跳转到定义
|
|
|
|
|
]} 跳转到下一处未匹配的 }
|
|
|
|
|
[( 跳转到上一处未匹配的 (
|
|
|
|
|
]) 跳转到下一处未匹配的 )
|
|
|
|
|
[s 跳转到上一处拼写错误
|
|
|
|
|
]s 跳转到下一处拼写错误
|
|
|
|
|
[c 上一个不同处(diff时)
|
|
|
|
|
]c 下一个不同处(diff时)
|
|
|
|
|
[/ 跳转到 C注释开头
|
|
|
|
|
]/ 跳转到 C注释结尾
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# VISUAL MODE - 由 v, V, CTRL-v 进入的可视模式
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
> 增加缩进
|
|
|
|
|
< 减少缩进
|
|
|
|
|
d 删除文字
|
|
|
|
|
c 改写文字
|
|
|
|
|
y 拷贝文字
|
|
|
|
|
~ 转换大小写
|
|
|
|
|
o 跳转到标记区的另外一端
|
|
|
|
|
O 跳转到标记块的另外一端
|
|
|
|
|
u 标记区转换为小写
|
|
|
|
|
U 标记区转换为大写
|
|
|
|
|
<Esc> 退出可视模式
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# 文件操作
|
|
|
|
|
##############################################################################
|
|
|
|
@ -190,6 +261,10 @@ gd 跳转到定义
|
|
|
|
|
:cd <path> 切换 Vim 当前路径
|
|
|
|
|
:pwd 显示 Vim 当前路径
|
|
|
|
|
gf 打开名称为光标下文件名的文件
|
|
|
|
|
:new 打开一个新的窗口编辑新文件
|
|
|
|
|
:enew 在当前窗口创建新文件
|
|
|
|
|
:vnew 在左右切分的新窗口中编辑新文件
|
|
|
|
|
:tabnew 在新的标签页中编辑新文件
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
@ -232,6 +307,8 @@ CTRL-w H 将当前窗口移动到最左边
|
|
|
|
|
CTRL-w J 将当前窗口移动到最下边
|
|
|
|
|
CTRL-w K 将当前窗口移动到最上边
|
|
|
|
|
CTRL-w L 将当前窗口移动到最右边
|
|
|
|
|
CTRL-w x 交换窗口
|
|
|
|
|
CTRL-w f 在新窗口中打开名为光标下文件名的文件
|
|
|
|
|
CTRL-w gf 在新窗口中打开名为光标下文件名的文件
|
|
|
|
|
CTRL-w R 旋转窗口
|
|
|
|
|
CTRL-w T 将当前窗口移到新的标签页中
|
|
|
|
@ -249,6 +326,8 @@ CTRL-w z 关闭预览窗口
|
|
|
|
|
:tabc 关闭当前标签页
|
|
|
|
|
:tabn n 切换到第n个标签页,比如 :tabn 3 切换到第三个标签页
|
|
|
|
|
ngt 切换到第n个标签页,比如 2gt 将会切换到第二个标签页
|
|
|
|
|
gt 下一个标签页
|
|
|
|
|
gT 上一个标签页
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
@ -267,8 +346,16 @@ ma 保存当前位置到书签 a ,书签名可以用 a-z 26
|
|
|
|
|
# 常用设置
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
:set all 列出所有选项设置情况
|
|
|
|
|
:set nocompatible 设置不兼容原始 vi 模式(必须设置在最开头)
|
|
|
|
|
:set bs=? 设置BS键模式,现代编辑器为 :set bs=eol,start,indent
|
|
|
|
|
:set sw=4 设置缩进宽度为 4
|
|
|
|
|
:set ts=4 设置制表符宽度为 4
|
|
|
|
|
:set noet 设置不展开 tab 成空格
|
|
|
|
|
:set et 设置展开 tab 成空格
|
|
|
|
|
:set winaltkeys=no 设置 GVim 下正常捕获 ALT 键
|
|
|
|
|
:set nowrap 关闭自动换行
|
|
|
|
|
:set ttimeout 允许终端按键检测超时(终端下功能键为一串ESC开头的扫描码)
|
|
|
|
|
:set ttm=100 设置终端按键检测超时为100毫秒
|
|
|
|
|
:set term 设置终端类型
|
|
|
|
|
:set ignorecase 设置搜索是否忽略大小写
|
|
|
|
|
:set list 设置显示制表符和换行符
|
|
|
|
@ -276,6 +363,9 @@ ma 保存当前位置到书签 a ,书签名可以用 a-z 26
|
|
|
|
|
:set paste 进入粘贴模式(粘贴时禁用缩进等影响格式的东西)
|
|
|
|
|
:set nopaste 结束粘贴模式
|
|
|
|
|
:set spell 允许拼写检查
|
|
|
|
|
:set hlsearch 设置高亮查找
|
|
|
|
|
:set insertmode Vim 始终处于插入模式下,使用 ctrl-o 临时执行命令
|
|
|
|
|
:set all 列出所有选项设置情况
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
@ -308,7 +398,42 @@ ma 保存当前位置到书签 a ,书签名可以用 a-z 26
|
|
|
|
|
:call system('ls') 调用 ls 命令,但是不显示返回内容
|
|
|
|
|
:!start notepad Windows 下启动 notepad,最前面可以加 silent
|
|
|
|
|
:sil !start cmd Windows 下当前目录打开 cmd
|
|
|
|
|
:%!prog 运行文字过滤程序,如 :%!tidy -q -i --show-errors 0
|
|
|
|
|
:%!prog 运行文字过滤程序,如整理 json格式 :%!python -m json.tool
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# Quickfix 窗口
|
|
|
|
|
##############################################################################
|
|
|
|
|
:copen 打开 quickfix 窗口(查看编译,grep等信息)
|
|
|
|
|
:copen 10 打开 quickfix 窗口,并且设置高度为 10
|
|
|
|
|
:cclose 关闭 quickfix 窗口
|
|
|
|
|
:cfirst 跳到 quickfix 中第一个错误信息
|
|
|
|
|
:clast 跳到 quickfix 中最后一条错误信息
|
|
|
|
|
:cnext 跳到 quickfix 中下一个错误信息
|
|
|
|
|
:cprev 跳到 quickfix 中上一个错误信息
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# 拼写检查
|
|
|
|
|
##############################################################################
|
|
|
|
|
|
|
|
|
|
:set spell 打开拼写检查
|
|
|
|
|
:set nospell 关闭拼写检查
|
|
|
|
|
]s 下一处错误拼写的单词
|
|
|
|
|
[s 上一处错误拼写的单词
|
|
|
|
|
zg 加入单词到拼写词表中
|
|
|
|
|
zug 撤销上一次加入的单词
|
|
|
|
|
z= 拼写建议
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
|
# 其他命令
|
|
|
|
|
##############################################################################
|
|
|
|
|
CTRL-E 向上卷屏
|
|
|
|
|
CTRL-Y 向下卷屏
|
|
|
|
|
zz 将光标所在行滚屏到屏幕中央
|
|
|
|
|
ga 显示光标下字符的 ascii 码或者 unicode 编码
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# vim: set ts=4 sw=4 tw=0 noet noautoindent :
|
|
|
|
|