Basic
Concept
Mode
- 普通模式:按
esc进入 - 编辑模式:普通模式时按
i(在光标前插入)或a(在光标后插入)或o(在下一行插入)进入 - 末行模式:普通模式时按
:(冒号执行命令)或/(斜杠向前搜索)或?(问号向后搜索)进入 - 可视模式:普通模式时按
v(小v会选中一个字)或V(大V会选中一整行)进入
Edit Mode
i:进入插入编辑模式,在光标前插入I:进入插入编辑模式,在行首(bol)处插入a:进入追加编辑模式,在光标后追加A:进入追加编辑模式,在行尾(eol)后追加o:进入新行编辑模式,在下一行添加新行O:进入新行编辑模式,在上一行添加新行r:进入替换编辑模式,重复替换多个字(前面可接数字)R:进入替换编辑模式,连续替换多个字(按esc结束)
i:insert,a:append,o:open,r:replace
Line Mode
:(冒号):执行命令/(斜杠):向前搜索?(问号):向后搜索
Visual Mode
v:进入可视模式,并选中一个字V:进入可视模式,并选中一整行
v:visual
Motion
vim移动格式: [n]{motion}
h:左l:右j:下k:上b:词首e:词尾w:下一个词的词首0:行首^:行首(第一个非空白字符)$:行尾
b:begin,e:end,w:word
Shortcut
普通模式快捷键
- 移到首行:gg
- 移到尾行:G
- 向上翻页(整页):ctrl + b
- 向下翻页(整页):ctrl + f
- 向上翻页(半页):ctrl + u
- 向下翻页(半页):ctrl + d
- 光标行居中:zz
- 光标行置顶:zt
- 光标行置底:zb
b:backward,f:forward,u:up,d:down,t:top,b:bottom
末行模式快捷键
- 移动到行首:home、ctrl + b
- 移动到行尾:end、ctrl + e
- 移动到(上一个)词首:ctrl + arrow left
- 移动到(下一个)词尾:ctrl + arrow right
- 从光标前删除到行首:ctrl + u
- 从光标前删除到词首:ctrl + w
b:begin,e:end,w:word
Usage
Exit
w:保存不退出q:不保存退出(如果有修改会提示保存)wq:保存退出x:保存退出(有修改时)或者退出(无修改时)w!:强制保存不退出q!:强制不保存退出wq!:强制保存退出
Edit
Basic
- 全选(Select All):ggVG
- 删除(Delete):
- 剪切(Cut):d[space|motion]、c[space|motion]
- 复制(Copy):y[space|motion]
- 粘贴(Paste):p(粘贴到光标后)、P(粘贴到光标前)、ctrl + v(编辑模式时)
- 保存(Save):w(末行模式时)
d:delete,c:change,y:yank,p:put
Skill
- 剪切行:[n]dd、[n]cc
- 复制行:[n]yy
Cut
eoi:end of input(vim中普通模式输入时空格和箭头可以做会输入结束符,回车和TAB不行)
vim命令格式1: [n]{cmd}
x:删除多个字,会停留在普通模式,会存到寄存器s:删除多个字,会进入编辑模式,会存到寄存器
x:remove,s:substitute
vim命令格式2: [n]{cmd}<eoi> 或 {cmd}[n]<eoi>
d:删除多个字,会停留在普通模式,会存到寄存器c:删除多个字,会进入编辑模式,会存到寄存器
d:delete,c:change
Transform
- 转大写(UPPERCASE):gU[space|motion]
- 转小写(lowercase):gu[space|motion]
- 转标题(Capitalize):
- 转驼峰(camelCase):
- 转帕斯(PascalCase):
- 转蛇形(snake_case):
- 转连字(kebab-case):
- 转常量(CONST_CASE):
Undo
撤销(Undo):u
Redo
重做(Redo):.(点号)、ctrl + r
Move
Basic
- 常规性移动:mouse pointer(鼠标指针)、arrow(键盘箭头)、hjkl(普通模式时)
- 左移一个字符:arrow left
- 右移一个字符:arrow right
- 左移一个单词:ctrl + arrow left、b(词首)
- 右移一个单词:ctrl + arrow right、e(词尾)、w(词首)
- 移动到行首:home、0、^
- 移动到行尾:end、$
- 移动到页顶:gg
- 移动到页底:G
- 移动到对应的括号:
g:goto,b:begin,e:end
Backward
- 后退(Backward):ctrl + o
Forward
- 前进(Forward):ctrl + i
Cursor
- 单行添加光标(Add Cursor Single):
- 多行添加光标(Add Cursor Multiple):
- 向上添加光标(Add Cursor Above):
- 向下添加光标(Add Cursor Below):
Scroll
- 常规性滚动:mouse wheel(鼠标的滑轮)
- 向上翻页:page up
- 向下翻页:page down
Select
Basic
- 常规性选择:left click + mouse slide(按着鼠标左键并滑动鼠标)
- 选择字符(Char):v + motion
- 选择单词(Word):v + motion
- 选择一行(Line):V
- 选择一片(Area):v + motion
- 选择到行首:v^
- 选择到行尾:v$
- 选择到页顶:vgg
- 选择到页底:vG
- 选择环绕(Surround):
选择环绕:选择引号和括号里面的内容
Expand
- 扩展(Expand)选择:v + motion
Shrink
- 收缩(Shrink)选择:v + motion
Occurrence
- 向后添加选中(Add Next Occurrence):
- 向前添加选中(Add Previous Occurrence):
- 添加所有选中(Select All Occurrence):
Column
- 字选模式(Char Selection Mode):
- 行选模式(Row Selection Mode):
- 列选模式(Column Selection Mode):ctrl + v
Find
vim查找格式: /{pattern} 和 ?{pattern}
*:快速正向查找一个单词#:快速反向查找一个单词n:搜索中的下一个N:搜索中的上一个
Pattern
1 | \|:匹配多个表达式 |
Replace
vim替换格式1: [range]s/{pattern}/{string}/flags
vim替换格式2: [range]global/{pattern}/{command}
Range
range的格式如下
1 | .:代表当前行 |
ps:区间分隔符用逗号
,或者分号;都可以的
range是左闭右闭的,省去range使用光标所在的行,range的一边缺省使用光标所在的行代替那一边
1 | %:所有行 |
Flag
1 | g:表示全局替换,将匹配到的所有项都替换掉,而不仅仅是第一个 |
Command
d:删除s/{old}/{new}/g:替换
More
Read
Save
Diff
:diffsplit:比较两个文件(水平切分窗口):vertical diffsplit比较两个文件(垂直切分窗口)
Grep
Set
View
:split:打开一个文件(水平切分窗口):vsplit:打开一个文件(垂直切分窗口):sview:用只读模式打开一个文件(水平切分窗口):vertical sview用只读模式打开一个文件(垂直切分窗口):new:新建一个文件(水平切分窗口):vnew:新建一个文件(垂直切分窗口):edit:编辑一个文件(替换当前窗口)
Find
Explore
Outline
Ctags:标签生成工具(是独立的程序,不是vim的插件)
Intellisense
lsp:language server plugin