vim 常用操作

编辑模式

通过 i 命令进入编辑模式

  • i 在当前光标所在位置进入编辑模式

  • I 在当前行的第一个字符进入编辑模式

  • a 在当前光标所在位置的下一个字符进入编辑模式

  • A 在当前行的最后一个字符进入编辑模式

  • o 在当前行的下一行插入一个新行,并进入编辑模式

  • O 在当前行的上一行插入一个新行,并进入编辑模式

也可通过 A 命令进入仅添加编辑模式,此时光标在当前字符的后面,无法进行删除操作。

命令模式模式

ESC 键退出编辑模式,这时是命令模式。

保存退出

  • :q 退出 vim
  • :q! 强制退出 vim 不保存
  • :w 保存修改
  • :wq 保存修改并退出

移动光标

通过 h j k l 键移动光标,分别对应左、下、上、右

  • 0 移动光标到行首
  • $ 移动光标到行尾
  • gg 移动光标到文件首
  • G 移动光标到文件尾
  • nG 移动光标到第 n 行, 如 10G 移动光标到第 10 行
  • n+ 光标向下移动 n 行, 如 10+ 光标向下移动 10 行
  • n- 光标向上移动 n 行, 如 10- 光标向上移动 10 行
  • n<space> 光标向右移动 n 个字符, 如 10<space> 光标向右移动 10 个字符
  • n<enter> 光标向下移动 n 行, 如 10<enter> 光标向下移动 10 行
  • w 光标向右移动一个单词,注记:word
  • b 光标向左移动一个单词,注记:back
  • e 光标向右移动到单词结尾,注记:end

删除

字符删除

  • x 删除光标所在位置的字符
  • X 删除光标所在位置的前一个字符

单词删除

  • dw 删除光标所在位置到一个单词开头的字符,包括空格 (注记:delete word)
  • db 删除光标所在位置到一个单词开头的字符,包括空格 (注记:delete back)
  • de 删除光标所在位置到一个单词结尾的字符 (注记:delete end)
  • dd 删除光标所在行
  • d$ 删除光标所在位置到行尾的字符
  • %d全部删除

    删除命令都会将删除的内容存入剪贴板,可以通过下文的粘贴命令将剪贴板的内容粘贴到文件中。

复制粘贴

  • yy 复制光标所在行
  • yw 复制光标所在位置到一个单词开头的字符,包括空格 (注记:yank word)
  • p 粘贴剪贴板内容到光标所在行的下一行 (注记:paste)
  • P 粘贴剪贴板内容到光标所在行的上一行

还可以使用 v 进入可视模式,然后使用 h j k l 键移动光标,选中一段文本,然后按 y 复制选中的文本,再根据需要使用 pP 粘贴。(有点像鼠标拖拽选中文本,然后复制粘贴)

撤销重做

  • u 撤销上一次操作
  • Ctrl + r 重做被撤销的操作,或者说撤销撤销操作
  • U 撤销对整行的修改
  • . 重复上一次修改

查找替换

查找字符

  • /word 查找 word 字符串,按 n 查找下一个,按 N 查找上一个,如果想逆向查找,可以使用 ?word 命令
  • :set ic 查找时忽略大小写 (ignore case)
  • :set is 查找时显示匹配的字符串 (ignore case)
  • :set hls 查找时高亮显示匹配的字符串 (highlight search)

查找括号匹配

  • % 查找括号匹配,如 () [] {},光标放在括号上,按 % 可以跳转到匹配的括号上
  • :set showmatch 设置括号匹配高亮

替换

  • r 按下 r 后输入一个字符,将光标所在位置的字符替换为输入的字符
  • R 按下 R 后进入替换模式,每输入一个字符,将光标所在位置的字符替换为输入的字符,并向右移动一个字符。按 ESC 退出替换模式
  • ce 删除光标所在位置到一个单词结尾的字符,并进入编辑模式
  • c$ 删除光标所在位置到行尾的字符,并进入编辑模式
  • :s/old/new 将当前行第一个 old 替换为 new
  • :s/old/new/g 将当前行所有 old 替换为 new (其中 g 为 global 的意思)
  • :%s/old/new/g 将所有行所有 old 替换为 new
  • :%s/old/new/gc 将所有行所有 old 替换为 new,替换前询问是否替换 (其中 c 为 confirm 的意思)
  • :n1,n2s/old/new/g 将第 n1 行到第 n2 行所有 old 替换为 new

命令数字量化

vim 指令中很多命令都可以量化,如删除字符, 删除行,向某个方向移动光标等,可以量化为删除多少个字符,删除多少行,向某个方向移动多少个字符等。对于这些命令,可以在命令前加上数字,如 10dd 删除 10 行,10w 向右移动 10 个单词,10b 向左移动 10 个单词,10e 向右移动 10 个单词到单词结尾,10+ 光标向下移动 10 行,10- 光标向上移动 10 行,10<space> 光标向右移动 10 个字符,10<enter> 光标向下移动 10 行。

执行外部命令

可以通过 :!command 执行外部命令,如 :!ls 执行 ls 命令,:!date 执行 date 命令。这样可以在 vim 中执行外部命令,执行完后会返回 vim,不会退出 vim。

状态命令

  • Ctrl + g 显示当前编辑文件的状态,包括文件名,文件状态,总行数,当前行号,光标位置百分比,当前所处列号。
  • :set number 显示行号

vim 常用操作 - 赵俊个人博客 (zhaojun.vip)


vim 常用操作
http://example.com/2024/08/27/vim-常用操作/
作者
秋雨夜眠
发布于
2024年8月27日
更新于
2024年8月27日
许可协议