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