常用模式:
- 普通模式(Normal mode)
- 插入模式(Insert mode)
- 命令行模式(Command line mode)
常用模式切换
- 启动后进入普通模式,按i(插入)或a(附加)键进入插入模式
- 插入模式 / 命令行模式按Esc / Ctrl+[ 可进入普通模式
- 普通模式按 : 进入命令行模式,输入wq回车后保存并退出vim
打开文件
- $vim test.txt 打开已存在的文件,若不存在则新建
- 进入命令行模式后输入 :e 文件路径打开相应文件
游标移动
- 在普通模式使用方向键或者h,j,k,l 键可以移动光标
- h ------ 左
- l ------ 右
- j ------ 下
- k ------ 上
- w 移动到下一个单词
- b 移动到上一个单词
插入模式
- 在普通行中使用下面的键进入插入模式
- i:在当前光标出进行编辑
- I:在行首插入
- A:在行末插入
- a:在光标后插入编辑
- o:在当前行后插入一个新行
- O:在当前行前插入一个新行
- cw:替换从光标所在位置后到一个单词结尾的字符
命令行模式下保存文档
- 从普通模式输入 : 进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其他路径下
命令行模式下退出vim
- 从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑
- :q! :强制退出,不保存
- :q :退出
- :wq!:强制保存并退出
- :w <文件路径>:另存为
- :saveas 文件路径:另存为
- :x:保存并退出
- :wq:保存并退出
普通模式下退出vim
- Shift+zz
普通模式下删除vim文本信息
- x 删除游标所在的字符
- X 删除游标所在前一个字符
- Delete 同x
- dd 删除整行
- dw 删除一个单词(不适用中文)
- d$或D 删除至行尾
- d^ 删除至行首
- dG 删除到文档结尾处
- d1G 删至文档首部
- 2dd 一次删除两行
重复命令
- 普通模式下输入 x , 删除第一个字符,输入.(小数点)会再次删除一个字符
- 执行指定次数相同命令 N<command>
10x:删除10个连续字符
3dd:删除3行文本
5dw:删除5个单词
游标的快速跳转
- 行间跳转(进入命令行模式,输入:set nu显示行号)
- nG 游标移动到第n行
- gg 游标移动到第一行
- G 游标移动到最后一行
- Ctrl + o 快速回到上一次(跳转前)光标所在位置
行内跳转
- w 到下一个单词的开头
- e 到下一个单词的结尾
- b 到前一个单词的开头
- ge 到前一个单词的结尾
- 0或^ 到行头
- $ 到行尾
- f<字母> 向后搜索<字母>并跳转到第一个匹配的位置
- F<字母> 先前搜素<字母>并跳转到第一个匹配的位置
- ~ 将游标所在字母变成大写或小写
复制
- yy 复制游标所在的整行(3yy表示复制3行)
- y^或y0 复制至行首,不包含光标所在字符
- y$ 复制至行尾,含光标所在字符
- yw 复制一个单词,y2w复制两个单词
- yG 复制至文本末
- y1G 复制至文本开头
粘贴
- p(小写) 粘贴至光标后(下)
- P(大写) 粘贴至光标前(上)
- dd 剪切,dd后使用p来粘贴,实现交换上下行
替换及撤销
- r + <待替换字母> 将游标所在字母替换为指定字母
- R 连续替换,直到按下Esc
- cc 替换整行,即删除游标所在行,并进入插入模式
- cw 替换一个单词,即删除一个单词,并进入插入模式
- C(大写) 替换游标以后至行末
- ~ 反转游标所在字母大小写
- u{n} 撤销一次或n次操作
- U 撤销当前行的所有修改
- Ctrl + r redo,即撤销undo的操作
快速缩进
- 普通模式下输入>>,整行将向右缩进
- 普通模式下输入<<,整行向左回退
- 输入:shiftwidth值进行设置可以控制缩进和回退的字符数
- :set shiftwidth? 获取目前设定值
- :set shiftwidth=10 设置字符数
调整文本位置
- :ce 本行内容居中
- :ri 本行文本靠右
- :le 本行内容靠左
快速查找
- /icmp 查找字符串icmp
- n 查找下一个icmp
- ?tcp 向上查找字符串tcp
- N 查找上一个出现的tcp
高级查找
- * 寻找游标所在处单词(向前/上找)
- # 寻找游标所在处单词(向后/下找)
- g* 部分符合该单词即可(向前/上找)
- g# 部分符合该单词即可(向后/下找)