update tips

pull/11/head
skywind3000 7 years ago
parent cf6330c3bc
commit 6eadd9a0dd

@ -1,6 +1,6 @@
############################################################################## ##############################################################################
# VIM CHEATSHEET (中文速查表) - by skywind (created on 2017/10/12) # VIM CHEATSHEET (中文速查表) - by skywind (created on 2017/10/12)
# Version: 26, Last Modified: 2018/03/09 15:50 # Version: 29, Last Modified: 2018/03/11 23:49
# https://github.com/skywind3000/awesome-cheatsheets # https://github.com/skywind3000/awesome-cheatsheets
############################################################################## ##############################################################################
@ -43,7 +43,7 @@ ge 上一个单词尾
H 移动到屏幕上部 H 移动到屏幕上部
M 移动到屏幕中部 M 移动到屏幕中部
L 移动到屏幕下部 L 移动到屏幕下部
fx 跳转到下一个为 x 的字符 fx 跳转到下一个为 x 的字符2f/ 可以找到第二个斜杆
Fx 跳转到上一个为 x 的字符 Fx 跳转到上一个为 x 的字符
tx 跳转到下一个为 x 的字符前 tx 跳转到下一个为 x 的字符前
Tx 跳转到上一个为 x 的字符前 Tx 跳转到上一个为 x 的字符前
@ -94,8 +94,11 @@ CTRL-[ 退出插入模式(同 ESC 等价,但更顺手)
CTRL-W 向后删除单词 CTRL-W 向后删除单词
CTRL-O 临时退出插入模式,执行单条命令又返回插入模式 CTRL-O 临时退出插入模式,执行单条命令又返回插入模式
CTRL-\ CTRL-O 临时退出插入模式(光标保持),执行单条命令又返回插入模式 CTRL-\ CTRL-O 临时退出插入模式(光标保持),执行单条命令又返回插入模式
CTRL-R 插入寄存器(内部剪贴板编号)内容 CTRL-R 0 插入寄存器(内部 0号剪贴板内容CTRL-R 后可跟寄存器名
CTRL-R = 插入表达式计算结果 CTRL-R " 插入匿名寄存器内容,相当于插入模式下 p粘贴
CTRL-R = 插入表达式计算结果,等号后面跟表达式
CTRL-R : 插入上一次命令行命令
CTRL-R / 插入上一次搜索的关键字
CTRL-F 自动缩进 CTRL-F 自动缩进
CTRL-U 删除当前行所有字符 CTRL-U 删除当前行所有字符
CTRL-V {char} 插入非数字的字面量 CTRL-V {char} 插入非数字的字面量
@ -164,6 +167,8 @@ J 链接多行为一行
g~iw 替换当前单词的大小写 g~iw 替换当前单词的大小写
gUiw 将单词转成大写 gUiw 将单词转成大写
guiw 将当前单词转成小写 guiw 将当前单词转成小写
guu 全行转为小写
gUU 全行转为大写
<< 减少缩进 << 减少缩进
>> 增加缩进 >> 增加缩进
== 自动缩进 == 自动缩进
@ -245,6 +250,27 @@ N 向相反方向执行上一次搜索
:%s/p1/p2/gc 将当前文件中全替换p1为p2并且每处询问你是否替换 :%s/p1/p2/gc 将当前文件中全替换p1为p2并且每处询问你是否替换
:10,20s/p1/p2/g 将第10到20行中所有p1替换为p2 :10,20s/p1/p2/g 将第10到20行中所有p1替换为p2
:%s/1\\2\/3/123/g 将“1\2/3” 替换为 “123”特殊字符使用反斜杠标注 :%s/1\\2\/3/123/g 将“1\2/3” 替换为 “123”特殊字符使用反斜杠标注
:%s/\r//g 删除 DOS 换行符 ^M
##############################################################################
# VISUAL MODE - 由 v, V, CTRL-V 进入的可视模式
##############################################################################
> 增加缩进
< 减少缩进
d 删除高亮选中的文字
x 删除高亮选中的文字
c 改写文字,即删除高亮选中的文字并进入插入模式
s 改写文字,即删除高亮选中的文字并进入插入模式
y 拷贝文字
~ 转换大小写
o 跳转到标记区的另外一端
O 跳转到标记块的另外一端
u 标记区转换为小写
U 标记区转换为大写
g CTRL-G 显示所选择区域的统计信息
<Esc> 退出可视模式
############################################################################## ##############################################################################
@ -255,7 +281,9 @@ CTRL-O 跳转到上一个位置
CTRL-I 跳转到下一个位置 CTRL-I 跳转到下一个位置
CTRL-^ 跳转到 alternate file (当前窗口的上一个文件) CTRL-^ 跳转到 alternate file (当前窗口的上一个文件)
% 跳转到 {} () [] 的匹配 % 跳转到 {} () [] 的匹配
gd 跳转到定义 gd 跳转到局部定义(光标下的单词的定义)
gD 跳转到全局定义(光标下的单词的定义)
gf 打开名称为光标下文件名的文件
[[ 跳转到上一个顶层函数比如C语言以大括号分隔 [[ 跳转到上一个顶层函数比如C语言以大括号分隔
]] 跳转到下一个顶层函数比如C语言以大括号分隔 ]] 跳转到下一个顶层函数比如C语言以大括号分隔
[m 跳转到上一个成员函数 [m 跳转到上一个成员函数
@ -270,23 +298,6 @@ gd 跳转到定义
]/ 跳转到 C注释结尾 ]/ 跳转到 C注释结尾
##############################################################################
# VISUAL MODE - 由 v, V, CTRL-V 进入的可视模式
##############################################################################
> 增加缩进
< 减少缩进
d 删除文字
c 改写文字
y 拷贝文字
~ 转换大小写
o 跳转到标记区的另外一端
O 跳转到标记块的另外一端
u 标记区转换为小写
U 标记区转换为大写
<Esc> 退出可视模式
############################################################################## ##############################################################################
# 文件操作 # 文件操作
############################################################################## ##############################################################################
@ -303,7 +314,6 @@ U 标记区转换为大写
:wa 保存所有文件 :wa 保存所有文件
:cd <path> 切换 Vim 当前路径 :cd <path> 切换 Vim 当前路径
:pwd 显示 Vim 当前路径 :pwd 显示 Vim 当前路径
gf 打开名称为光标下文件名的文件
:new 打开一个新的窗口编辑新文件 :new 打开一个新的窗口编辑新文件
:enew 在当前窗口创建新文件 :enew 在当前窗口创建新文件
:vnew 在左右切分的新窗口中编辑新文件 :vnew 在左右切分的新窗口中编辑新文件
@ -359,6 +369,8 @@ CTRL-W R 旋转窗口
CTRL-W T 将当前窗口移到新的标签页中 CTRL-W T 将当前窗口移到新的标签页中
CTRL-W P 跳转到预览窗口 CTRL-W P 跳转到预览窗口
CTRL-W z 关闭预览窗口 CTRL-W z 关闭预览窗口
CTRL-W _ 纵向最大化当前窗口
CTRL-W | 横向最大化当前窗口
############################################################################## ##############################################################################
@ -373,6 +385,12 @@ CTRL-W z 关闭预览窗口
:tabo 关闭其他标签页 :tabo 关闭其他标签页
:tabn n 切换到第n个标签页比如 :tabn 3 切换到第三个标签页 :tabn n 切换到第n个标签页比如 :tabn 3 切换到第三个标签页
:tabm n 标签移动 :tabm n 标签移动
:tabfirst 切换到第一个标签页
:tablast 切换到最后一个标签页
:tab help 在标签页打开帮助
:tab drop <file> 如果文件已被其他标签页和窗口打开则跳过去,否则新标签打开
:tab split 在新的标签页中打开当前窗口里的文件
:tab ball 将缓存中所有文件用标签页打开
ngt 切换到第n个标签页比如 2gt 将会切换到第二个标签页 ngt 切换到第n个标签页比如 2gt 将会切换到第二个标签页
gt 下一个标签页 gt 下一个标签页
gT 上一个标签页 gT 上一个标签页
@ -388,6 +406,10 @@ ma 保存当前位置到书签 a ,书签名可以用 a-z
`a 跳转到书签 a所在位置 `a 跳转到书签 a所在位置
`. 跳转到上一次编辑的行 `. 跳转到上一次编辑的行
'A 跳转到全文书签 A 'A 跳转到全文书签 A
[' 跳转到上一个书签
]' 跳转到下一个书签
'< 跳到上次可视模式选择区域的开始
'> 跳到上次可视模式选择区域的结束
############################################################################## ##############################################################################
@ -406,6 +428,7 @@ ma 保存当前位置到书签 a ,书签名可以用 a-z
:set ttm=100 设置终端按键检测超时为100毫秒 :set ttm=100 设置终端按键检测超时为100毫秒
:set term=? 设置终端类型,比如常见的 xterm :set term=? 设置终端类型,比如常见的 xterm
:set ignorecase 设置搜索是否忽略大小写 :set ignorecase 设置搜索是否忽略大小写
:set smartcase 智能大小写,默认忽略大小写,除非搜索内容里包含大写字母
:set list 设置显示制表符和换行符 :set list 设置显示制表符和换行符
:set number 设置显示行号,禁止显示行号可以用 :set nonumber :set number 设置显示行号,禁止显示行号可以用 :set nonumber
:set paste 进入粘贴模式(粘贴时禁用缩进等影响格式的东西) :set paste 进入粘贴模式(粘贴时禁用缩进等影响格式的东西)
@ -427,6 +450,7 @@ ma 保存当前位置到书签 a ,书签名可以用 a-z
:h tutor 入门文档 :h tutor 入门文档
:h quickref 快速帮助 :h quickref 快速帮助
:h index 查询 Vim 所有键盘命令定义 :h index 查询 Vim 所有键盘命令定义
:h summary 帮助你更好的使用内置帮助系统
:h CTRL-H 查询普通模式下 CTRL-H 是干什么的 :h CTRL-H 查询普通模式下 CTRL-H 是干什么的
:h i_CTRL-H 查询插入模式下 CTRL-H 是干什么的 :h i_CTRL-H 查询插入模式下 CTRL-H 是干什么的
:h i_<Up> 查询插入模式下方向键上是干什么的 :h i_<Up> 查询插入模式下方向键上是干什么的
@ -437,7 +461,10 @@ ma 保存当前位置到书签 a ,书签名可以用 a-z
:h tabpage.txt 标签页使用帮助 :h tabpage.txt 标签页使用帮助
:h +timers 显示对 +timers 特性的帮助 :h +timers 显示对 +timers 特性的帮助
:h :! 查看如何运行外部命令 :h :! 查看如何运行外部命令
:h tips 查看 Vim 内置的常用技巧文档
:h set-termcap 查看如何设置按键扫描码 :h set-termcap 查看如何设置按键扫描码
:viusage NORMAL 模式帮助
:exusage EX 命令帮助
:version 显示当前 Vim 的版本号和特性 :version 显示当前 Vim 的版本号和特性
@ -494,6 +521,8 @@ zE 删除所有折叠
zf 创建代码折叠 zf 创建代码折叠
zF 指定行数创建折叠 zF 指定行数创建折叠
zi 切换折叠 zi 切换折叠
zm 所有代码折叠一层
zr 所有代码打开一层
zM 折叠所有代码,设置 foldlevel=0设置 foldenable zM 折叠所有代码,设置 foldlevel=0设置 foldenable
zR 打开所有代码,设置 foldlevel 为最大值 zR 打开所有代码,设置 foldlevel 为最大值
zn 折叠 none重置 foldenable 并打开所有代码 zn 折叠 none重置 foldenable 并打开所有代码
@ -519,10 +548,13 @@ q 结束录制宏
CTRL-E 向上卷屏 CTRL-E 向上卷屏
CTRL-Y 向下卷屏 CTRL-Y 向下卷屏
CTRL-G 显示正在编辑的文件名,以及大小和位置信息 CTRL-G 显示正在编辑的文件名,以及大小和位置信息
g CTRL-G 显示文件的:大小,字符数,单词数和行数,可视模式下也可用
zz 调整光标所在行到屏幕中央 zz 调整光标所在行到屏幕中央
zt 调整光标所在行到屏幕上部 zt 调整光标所在行到屏幕上部
zb 调整光标所在行到屏幕下部 zb 调整光标所在行到屏幕下部
ga 显示光标下字符的 ascii 码或者 unicode 编码 ga 显示光标下字符的 ascii 码或者 unicode 编码
g8 显示光标下字符的 utf-8 编码结果
gi 回到上次进入插入的地方,并切换到插入模式
K 查询光标下单词的帮助 K 查询光标下单词的帮助
CTRL-PgUp 上个标签页GVim OK部分终端软件需设置对应键盘码 CTRL-PgUp 上个标签页GVim OK部分终端软件需设置对应键盘码
CTRL-PgDown 下个标签页GVim OK部分终端软件需设置对应键盘码 CTRL-PgDown 下个标签页GVim OK部分终端软件需设置对应键盘码
@ -533,14 +565,19 @@ CTRL-PgDown 下个标签页GVim OK部分终端软件需设置对
:set termcap 查看会从终端接收什么以及会发送给终端什么命令 :set termcap 查看会从终端接收什么以及会发送给终端什么命令
:set guicursor= 解决 SecureCRT/PenguiNet 中 NeoVim 局部奇怪字符问题 :set guicursor= 解决 SecureCRT/PenguiNet 中 NeoVim 局部奇怪字符问题
:set t_RS= t_SH= 解决 SecureCRT/PenguiNet 中 Vim8.0 终端功能奇怪字符 :set t_RS= t_SH= 解决 SecureCRT/PenguiNet 中 Vim8.0 终端功能奇怪字符
:set fo+=a 开启文本段的实时自动格式化
:earlier 15m 回退到15分钟前的文件内容 :earlier 15m 回退到15分钟前的文件内容
:.!date 在当前窗口插入时间 :.!date 在当前窗口插入时间
:%!xxd 开始二进制编辑 :%!xxd 开始二进制编辑
:%!xxd -r 保存二进制编辑 :%!xxd -r 保存二进制编辑
:r !curl -sL {URL} 读取 url 内容添加到光标后 :r !curl -sL {URL} 读取 url 内容添加到光标后
:g/^\s*$/d 删除空行
:g/green/d 删除所有包含 green 的行
:v/green/d 删除所有不包含 green 的行
:g/gladiolli/# 搜索单词打印结果,并在结果前加上行号 :g/gladiolli/# 搜索单词打印结果,并在结果前加上行号
:g/ab.*cd.*efg/# 搜索包含 ab,cd 和 efg 的行,打印结果以及行号 :g/ab.*cd.*efg/# 搜索包含 ab,cd 和 efg 的行,打印结果以及行号
:v/./,/./-j 压缩空行 :v/./,/./-j 压缩空行
:Man bash 在 Vim 中查看 man先调用 :runtime! ftplugin/man.vim 激活
/fred\|joe 搜索 fred 或者 joe /fred\|joe 搜索 fred 或者 joe
/\<\d\d\d\d\> 精确搜索四个数字 /\<\d\d\d\d\> 精确搜索四个数字
/^\n\{3} 搜索连续三个空行 /^\n\{3} 搜索连续三个空行
@ -640,6 +677,51 @@ reddit https://www.reddit.com/r/vim/
十六使用经验 http://zzapper.co.uk/vimtips.html 十六使用经验 http://zzapper.co.uk/vimtips.html
##############################################################################
# TIPS
##############################################################################
- 永远不要用 CTRL-C 代替 <ESC> 完全不同的含义,容易错误中断正在当前脚本
- 很多人使用 CTRL-[ 代替 <ESC>,左右小指 CTRL右手小指 [ 熟练后很方便
- SecureCRT 中使用 Vim 8 内嵌终端如看到奇怪字符,使用 :set t_RS= t_SH= 解决
- SecureCRT 中使用 NeoVim 如看到奇怪字符,使用 :set guicursor= 解决
- * 和 # (以及 g*/g#)是十分重要的查找命令
- 使用 @: 重复执行上一次 Ex 命令,比如 :nohl<cr>, @:, @:, @:
- SHIFT 相当于移动加速键, w b e 移动光标很慢,但是 W B E 走的很快
- 自己要善于总结新技巧,比如移动到行首非空字符时用 0w 命令比 ^ 命令更容易输入
- 在空白行使用 dip 命令可以删除所有临近的空白行
- 在空白区使用 viw 可以选择所有空白字符
- 缩进时使用 >8j >} <ap =i} == 会方便很多
- 越重复的工作,越需要努力的将其自动化
- 编程时可以使用 [{ 和 ]} 快速在函数间移动
- 插入模式下,当你发现一个单词写错了,应该多用 CTRL-W 这比 <BackSpace> 快
- 插入模式下CTRL-X CTRL-F 可以方便的补全当前目录的文件名
- 插入模式下,可用 CTRL-V u 输入 unicode如 <C-V>u1234 输入16进制 unicoode
- 插入模式下CTRL-R = 可以用来简单计算,比如 <C-R>=12*3.5/10<cr> 会插入 4.2
- 如果在插入模式下移动光标,那么就不能使用 . 来重复之前的插入了
- y d c 命令可以很好结合 f t 和 /X 比如 dt) 和 y/end<cr>
- c d x 命令会自动填充寄存器 "1 到 "9 , y 命令会自动填充 "0 寄存器
- 用 v 命令选择文本时,可以用 o 掉头选择,有时很有用
- ca) 和 yi} 很容易记忆,但是他们等同于 cab yiB 后者很容易输入
- 写文章时,可以写一段代码块,然后选中后执行 :!python 代码块就会被替换成结果
- 搜索后经常使用 :nohl 来消除高亮,使用很频繁,可以 map 到 <BackSpace> 上
- 搜索时可以用 CTRL-R CTRL-W 插入光标下的单词
- Vim 有一千零一种移动光标的方法,有时候就连 H M L 也是很有用的
- 不需要记忆上一次选择区域,'< 和 '> 可以跳到上次选择的开始和结束
- 如需编辑同一个文件的不同地方,可以用 :vs 或者 :split 将文件分为两个窗口
- 有六种方法来改变一个布尔设置: :set list nolist list! invlist list? list&
- 映射按键时,应该默认使用 noremap ,只有特别需要的时候使用 map
- 当你觉得做某事很低效时你应该停下来u u u u 然后思考正确的高效方式来完成
- 用 y复制文本后命令模式中 CTRL-R 然后按双引号 " 可以插入之前复制内容
- 如果你想全屏阅读帮助的话,使用 :tab help <keyword> 命令
- 粘贴文本时应该思考下前后是否包含空格
- :x 和 ZZ 命令和 :wq 类似,但是不会写入没有改变的文件,并且更快
- 多阅读 :h index 学习新的快捷键,让你更加高效
- Vim 帮助系统里有一个使用技巧集合,使用 :h tips 阅读
- Windows 下的 GVim 可以用 CTRL-INSERT 和 SHIFT-INSERT 操作系统剪贴板
- 思考题:知道下面控制代码 ^I ^M ^J ^[ ^H ^@ 分别代表什么意思么?
############################################################################## ##############################################################################
# References # References
############################################################################## ##############################################################################
@ -653,6 +735,8 @@ http://www.ouyaoxiazai.com/article/24/654.html
http://bbs.it-home.org/thread-80794-1-1.html http://bbs.it-home.org/thread-80794-1-1.html
http://www.lpfrx.com/wp-content/uploads/2008/09/vi.jpg http://www.lpfrx.com/wp-content/uploads/2008/09/vi.jpg
http://michael.peopleofhonoronly.com/vim/ http://michael.peopleofhonoronly.com/vim/
https://github.com/hobbestigrou/vimtips-fortune/blob/master/fortunes/vimtips
https://github.com/glts/vim-cottidie/blob/master/autoload/cottidie/tips
# vim: set ts=4 sw=4 tw=0 noet noautoindent : # vim: set ts=4 sw=4 tw=0 noet noautoindent :

Loading…
Cancel
Save