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
