【保姆级入门】Vim编辑器
熵界
2023年01月21日 22:44

模式

  • 正常模式:浏览文本、从宏观处理文本等操作

  • 编辑模式:文本修改、编辑等操作

  • 命令行模式:保存、退出、搜索等操作

  • 视觉模式:见下文

打开终端,输入命令

vim ab.c # 用vim打开一个名为ab.c的文件(无论这个文件是否存在)

修改vim配置,输入命令

vim --version # 查看配置文件

vim $HOME/.vimrc # 编辑配置文件

配置内容:

syntax on

set ts=4

set expandtab

set autoindent

set number

set relativenumber

按键对应功能

1.模式切换与保存退出等操作

  • i 进入编辑模式

  • esc 回到正常模式

  • : 进入命令行模式

  • :q 仅退出,如果内容有改动会无法直接退出

  • :q! 强制退出,不会保存改动的内容

  • :wq 保存并退出

  • :wqa 存在多个打开的vim时,全部保存并退出

  • :x 保存并退出

:wq与:x不同的是,:wq无论文件内容是否被实际修改都会重新写入,会强制更新文件的修改时间,使文件需要重新编译。而:x仅在文件内容被实际修改之后才会重新写入,否则不会重新写入并更新文件的修改时间

2.光标移动操作(正常模式下,非正常模式需要按esc返回正常模式)

  • k 上移

  • j 下移

  • h 左移

  • l 右移

光标一定范围内移动

  • w 移动到下一个单词开头

  • e 移动到下一个单词结尾

  • b 回退到上一个单词开头

  • G 移动到最后一行

  • gg 移动到第一行

  • :n n为数字,回车移动到第n行

  • ^ 移动到相对行首 (shift+6)

  • $ 移动到行尾 (shift+4)

  • 0 移动到绝对行首

  • { 移动到上一个空行

  • } 移动到下一个空行

以下操作需要提前修改好vim配置文件,且 行号显示会与上面的命令行模式指定行跳转有歧义

  • nk n为数字,上移到第n行

  • nj n为数字,下移到第n行

  • ngg n为数字,移动到第n行,没有上下限制

  • nG n为数字,效果同ngg

更推荐使用ngg或nG以及命令行跳转

3.文本编辑操作(正常模式下,非正常模式需要按esc返回正常模式)

插入

  • i 在光标前插入文本,在行首插入文本用对应的大写字母I

  • a 在光标后插入文本,在行尾插入文本用对应的大写字母A

  • o 新增下一行,新增上一行用对应的大写字母O

复制粘贴

  • yy 复制当前光标所在的行

  • nyy 复制当前光标开始的n行(也可以写成yny)

  • yw 复制当前光标处开始的一个单词

  • p 在当前行粘贴复制的内容,在前面加个数字n,表示进行n次粘贴操作

删除

注意:删除内容后可以使用p键粘贴删除的内容,相当于剪切

  • dd 删除当前光标所在的行

  • dw 删除从光标处开始的一个单词

  • cw 在dw的基础上删除后自动进入编辑模式

  • ciw 删除光标所在处的一个完整单词后自动进入编辑模式

  • ci{} 删除光标所在大括号里的内容并自动进入编辑模式,中括号、小括号同理。需要特别注意多层嵌套括号以及光标所处的位置

  • d$ 删除从光标开始到行尾的所有内容

  • c$ 删除从光标开始到行尾的所有内容并自动进入编辑模式

撤销与恢复

  • . 英文句点,重复上一次操作

  • u 撤销上一次操作

  • ctrl + r 恢复上一次操作,与撤销相反

视觉模式

  • v 进入视觉模式——可视化字符(对单个字符)

  • shift + v 进入视觉模式——可视化行(对一整行)

    • 配合>(shift+.)键向右缩进调整格式

    • 配合ctrl+?进行批量注释

  • ctrl + v 进入视觉模式——可视化块(用法尚不明确)

视觉模式下,光标初始的位置和光标最后停留的位置之间会被标记

  • d 删除被标记的内容,并返回正常模式

4.搜索、全局替换等操作(命令行模式下,以英文冒号:开头,输入完命令后按回车)

  • :/xxx 搜索指定名称的文本,xxx为指定的名称。通过n键查找下一个匹配的文本,通过shift+n键查找上一个匹配的文本

  • :%s/xxx/yyy/g 全局替换xxx的旧文本为yyy的新文本,g表示全局替换