模式

VIM 中有多种模式:基本模式和派生模式

基本模式

Normal mode 普通模式、默认模式、命令模式

默认模式,首次用 VIM 打开文件进入该模式,在其他模式中可以使用 ESC 进入该模式。也叫命令模式

使用 Ctrl + g 可显示当前文件名和一些其他信息

Visual mode 可视模式

在 Normal mode 下,输入 v , V 或者 Ctrl + v 进入可视化模式,该模式可以选择一块编辑区域,然后对选中的文件内容执行 插入删除替换改变大小写 等操作。

  • 字符选择模式:选中光标经过的所有字符,普通模式下按 v 进入

  • 行选择模式:选中光标经过的所有,普通模式下按 V 进入

  • 块选择模式:选中一整个矩形框表示的所有文本,普通模式下按 Ctrl + v 进入

可以使用 o 在选中区域的左上角右下角切换

参考 https://vimjc.com/vim-visual-mode.html

Select mode 选择模式

  • 可以用鼠标或光标键高亮选择文本

  • 任何输入都会替换选择的高亮文本

  • 并进入插入模式

参考 https://www.bilibili.com/read/cv12497070

Insert mode 插入模式、编辑模式

可以将你的输入插入当前文档

普通模式进入插入模式

  • i 光标的一个字符处
  • I 光标当前行的行首
  • a 光标的一个字符处
  • A 光标当前行的行尾
  • o 光标当前行的下一行
  • O 光标当前行的上一行

参考 https://vimjc.com/vim-edit-command.html

Command-Line mode 命令行模式

普通模式输入 : 进入命令行模式

一些常用的命令

  • :set number 显示行号,简写 :se[t] nu[mber]
  • :set nonumber 关闭显示行号,简写 :se[t] nonu[mber]
  • :set relativenumber 显示相对行号,简写 se[t] rnu ,这时同时设置 :se nu 会,当前行显示绝对行号,上下部分显示相对行号
  • :w 保存当前编辑的文件
  • :wq 保存当前编辑的文件并退出
  • :w! 强制将当前文件保存
  • :q 退出vim
  • :q! 强制退出
  • :write [fileName] 将当前文件另存为 fileName 并打开
  • :saveas [fileName] 将当前文件另存为 fileName,简写 :sav [fileName]
  • / 查询,n 查找上一个, N 查找上一个

参考

https://www.bilibili.com/read/cv12686699

https://vimjc.com/vim-edit-command.html

Ex mode 多行命令执行模式

Ex 指的是 Execute

普通模式使用 gQ 进入,使用 :visual 退出

参考 https://www.bilibili.com/read/cv12497070

Vim 文本编辑命令

插入

普通模式进入插入模式

  • i 光标的一个字符处
  • I 光标当前行的行首
  • a 光标的一个字符处
  • A 光标当前行的行尾
  • o 光标当前行的下一行
  • O 光标当前行的上一行

删除

在普通模式下

  • x 删除光标位置的一个字符

  • dd 删除光标所在

  • d0 删除光标位置到当前的行首

  • d$ 删除光标位置到当前的行尾

  • dbdB 删除从光标位置到当前单词开始部分

  • dwdW 删除从光标位置当当前单词结束部分

  • cbcB 删除从光标位置到当前单词开始部分,并进入插入模式

  • cwcW 删除从光标位置到当前单词结束部分,并进入插入模式

复制、粘贴

在普通模式下

  • yw 复制从光标位置到当前单词结束部分的内容

  • yy 复制当前

  • p 将复制的文本内容复制到光标所在的字符

  • P将复制的文本内容复制到光标所在的字符

替换

  • r 替换光标所在字符一次
  • R 一直替换,直到按下 ESC

撤销

  • u 撤销
  • U 撤销撤销的内容

保存

  • :w 保存当前编辑的文件
  • :wq 保存当前编辑的文件并退出
  • :w! 强制将当前文件保存

另存为

  • :write [fileName] 将当前文件另存为 fileName 并打开
  • :saveas [fileName] 将当前文件另存为 fileName,简写 :sav [fileName]

Vim 中的位置

  • 在普通模式下可以使用 hjkl ,移动左、下、上、右

  • gg 到当前文本的行首

  • G 到当前文本的行尾

参考

https://vimjc.com/

http://vimdoc.sourceforge.net/

https://www.runoob.com/linux/linux-vim.html