后续更新:https://www.yuque.com/wangdd/...
全局
- 文件另存为 :saveas filename
- 关闭当前窗口 :close
光标
- 移动光标到页面顶部,中部,底部 H,M,L
- 移动到下个单词开头,结尾 w,e
- 移动到上个单词开头 b
- 移动光标 上下左右 k,j,h,l
- 移动到匹配的括号 %
- 移动到行首 0
- 移动到行首非空白字符 ^
- 移动到行尾非空白字符 g
- 移动到行尾 $
- 移动到文件第一行 gg
- 移动到文件最后一行 G
- 移动到第10行 10G
- 移动屏幕使光标居中 zz
- 跳转到上一次的位置 ctrl+o 例如你在159行,然后你按了gg, 光标调到了第一行,然后你按ctrl+o, 光标会回到159行
- 跳转到下一次的位置 ctrl+i
- 跳转到下个同样单词的地方 *
- 跳转到上个同样单词的地方 #
- 跳到字符a出现的位置 fa, Fa
- 调到字符a出现的前一个位置 ta, Ta
- 跳到之前的位置 ``
- 跳到之前修改的位置 `.
- 跳到选区的起始位置 `<
- 跳到选区的结束位置 `>
滚动屏幕
- 向下,向上滚动一屏 ctrl+b, ctrl+f
- 向下,向上滚动半屏 ctrl+d, ctrl+u
插入模式
- 光标前、后插入 i,a
- 行首,行尾插入 I, A
- 在当前行上、下另一起行插入 O, o
- 从当前单词末尾插入 ea
- 退出插入模式 esc
- 删除前一个单词 ctrl+w
- 删除到行首 ctrl+u
编辑
- 替换光标下的字符 r
- 将下一行合并到当前行 J
- 将下一行合并到当前行,并一种中间的空白字符 gJ
- 清空当前行,并进入插入模式 cc
- 清空当前单词,并进入插入模式 cw
- 撤销修改 u
- 删除光标下的一个字符,然后进入插入模式 s
选择文本
- 普通光标选择, 进入选择文本模式 v
- 行选择,进入选择文本模式 V
- 块选择,进入选择文本模式 ctrl+v 在多行行首插入注释#
- ctrl+v 然后选择快,然后输入I, 然后输入#, 然后按esc
- 注意,输入I指令时,光标只会定位到一个位置,编辑的内容也只是在一个位置,但是按了esc后,多行都会出现#
- 进入选择文本模式之后
- 选择光标所在单词(光标要先位于单词上) aw
- 选择光标所在()区域,包括(), 光标要先位于一个括号上 ab
- 选择光标所在[]区域,包括[], 光标要先位于一个括号上 aB
- 选择光标所在()区域,不包括(), 光标要先位于一个括号上 ib
- 选择光标所在[]区域,不包括[], 光标要先位于一个括号上 iB
- 退出可视化区域 esc
选择文本命令
- 向左右缩进 <, >
- 复制 y
- 剪切 d
- 大小写转换 ~
标记
- 显示标记列表 :marks
- 标记当前位置为a ma
- 跳转到标记a的位置 `a
剪切删除
- 剪切当前行 dd
- 剪切2行 2dd
- 剪切当前单词 dw
- 从光标所在位置剪切到行尾 D, d$
- 剪切当前字符 x
- 删除单引号中的内容 di' da’ 删除包括'
- 删除双引号中的内容 di" da" 删除包括"
- 删除中括号中的内容 di[ da[ 删除包括[
- 删除大括号中的内容 di{ da{ 删除包括{
- 删除括号中的内容 di( da( 删除包含(
- 从当前光标位置,删除到到字符a dta
global命令
- 删除所有不包含匹配项的文本行 :v/re/d re可以是字符,也可以是正则
- 显示所有不包含匹配项的文本行 :v/re/p re可以是字符,也可以是正则
- 删除包含匹配项的行 :g/re/d re可以是字符,也可以是正则
- 显示所有包含匹配项的行 :g/re/p re可以是字符,也可以是正则
文本对象
- 当前单词 iw
- 当前单词和一个空格 aw
- 当前句子 is
- 当前句子和一个空格 as
- 当前段落 ip
- 当前段落和一个空行 ap
- 一对圆括号 a) 或 ab
- 圆括号内部 i) 或 ib
- 一对花括号 a}或 aB
- 花括号内部 i}或 iB
- a表示匹配两点和两点之间的字符), }, ], > , ‘, “, `, t(xml)
- i表示匹配两点内部之间的字符
复制
- 复制当前行 yy
- 复制2行 2yy
- 复制当前单词 yw
- 从光标所在位置复制到行尾 y$
- 复制单引号中的内容 yi' ya' 复制包括'
- 复制双引号中的内容 yi" ya” 复制包括"
- 复制中括号中的内容 yi[ ya[ 复制包括[
- 复制大括号中的内容 yi{ ya{ 复制包括{
粘贴
- 在光标后粘贴 p
- 在光标前粘贴 P
保存退出
- 保存 w
- 保存并退出 wq
- 不保存退出 q!
- 保存所有tab页并退出 wqa
查找
- 向下查找key /key
- 向上查找key ?key
- 下一个key n
- 上一个key N
- 移除搜索结果高亮 :noh
- 设置搜索高亮 :set hlsearch
- 统计当前模式匹配的个数 :%s///gn
字符串替换
全文将old替换为new %s/old/new/g
全文将old替换为new, 但是会一个一个确认 %s/old/new/gc
多文件搜索
- 多文件搜索 :vimgrep /key/ {file} vimgrep /export/ */
- 切换到下一个文件 cn
- 切换到上一个文件 cp
- 查看搜索结果列表 copen
- 查看文件缓冲区 :ls
窗口分割
- 水平分割窗口 :split 默认split仅针对当前文件,如果在新窗口打开新的文件,可以:split file
- 垂直分割窗口 :vsplit
- 打开空白的窗口 :new
- 关闭分割的窗口 ctrl+wq, :close 有时候ctrl+wq不管用,需要用close
- 窗口之间切换 ctrl+ww
- 切换到左边窗口 ctrl+wh
- 切换到右边窗口 ctrl+wl
- 切换到下边窗口 ctrl+wj
- 切换到上边窗口 ctrl+wk
- 关闭所有窗口 :qall 这表示 "quit all" (全部退出)。如果任何一个窗口没有存盘,Vim 都不会退出。同时光
- 标会自动跳到那个窗口,你可以用 ":write" 命令保存该文件或者 ":quit!" 放弃修改。
- 保存所有窗口修改后的内容 :wall 如果你知道有窗口被改了,而你想全部保存
- 关闭所有窗口,放弃所有修改 :qall! 注意,这个命令是不能撤销的。
- 保存所有修改,然后退出vim :wqall
窗口更多内容
http://vimcdoc.sourceforge.ne...
宏
- 录制宏a qa
- 停止录制宏 q
标签页
- 新建标签页 tabnew
- 在新标签页中打开file tabnew file
- 切换到下个标签页 gt
- 切换到上个标签页 gT
- 关闭当前标签页 :tabclose, :tabc
- 关闭其他标签页 :tabo, :tabonly
- 在所有标签页中执行命令 :tabdo commad :tabdo w
文本折叠
- 折叠文本内容 zfap http://vimcdoc.sourceforge.ne...
- 打开折叠 zo
- 关闭折叠 zc
- 展开所有折叠 zr
- 打开所有光标行上的折叠用 zO
- 关闭所有光标行上的折叠用 zC
- 删除一个光标行上的折叠用 zd
- 删除所有光标行上的折叠用 zD
设置
- 设置vim编辑器的宽度 set columns=200
自动补全
- 使用自动补全的下一个列表项 ctrl+n
- 使用自动补全的上一个列表项 ctrl+p
- 确认当前选择项 ctrl+y
- 还原最早输入项 ctrl+e
杂项
- 在vim中执行外部命令 :!ls -al
- 查看当前光标所在行与百分比 ctrl+g
- 挂起vim, 使其在后台运行 ctrl+z
- 查看后台挂起的程序 jobs
- 使挂起的vim前台运行 fg 如果有多个后台挂起的任务, 则需要指定任务序号,如 :fg %1
- 在每行行尾添加字符串abc :%s/$/abc
- 在每行行首添加字符串abc :%s/^/abc
- 每行行尾删除字符串abc :%s/$/abc
- 每行行首删除字符串abc :%s/^/abc
- 删除含有abc字符串的行 :g/abc/d
- 删除每行行首到特定字符的内容,非贪婪匹配 : %s/^.{-}abc// var = abc123, 会删除var = abc
- 调换当前行和它的下一行 ddp
- 全文格式化 gg 跳到第一行 shift v shift g =
参考:
changelog
- v0.0.1 2019/6/12
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。