VIM 使用教学
VIM使用教学
作者: ol
⚠著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
正常模式(NORMAL)
按 Esc 进入正常模式
光标移动
1 | 标准的移动光标的方法: 使用 h, j, k, l |
光标移动命令
| 快捷键 | 功能 | 备注 |
|---|---|---|
| 0 | 光标移动到行首 | 无 |
| $ | 光标移动到行尾部 | 选按两个键: shift + 4 |
| gg | 光标移动到文件头 | 第一行的开始 |
| G | 光标移动到文件尾部 | 最后一行的开始 |
| 数字n+G | 行跳转 | n 代表要跳转到哪一行 |
| 数字n+回车 | 相对跳转 n 行 | 从光标所在当前行往下跳 n 行, n 对应的是一个整数 |
| 数字n+j | 相对向下跳转 n 行 | 从光标所在当前行往下跳 n 行, n 对应的是一个整数,不需要回车 |
| 数字n+k | 相对向上跳转 n 行 | 从光标所在当前行往上跳 n 行, n 对应的是一个整数,不需要回车 |
| w | 光标按单词移动,移动到下一个单词首部 | w代表word |
| e | 光标按单词移动,移动到下一个单词尾部 | e代表end |
| b | 光标按单词移动,移动到上一个单词首部 | b代表back |
删除命令
在vim中是没有删除操作的, 其实所谓的删除就是剪切, 被删除的数据都可被粘贴到文档的任意位置, 即便如此我们还是习惯性的将剪切操作称之为删除, 常用的删除操作如下表所示:
| 快捷键 | 功能 | 备注 |
|---|---|---|
| x (小写) | 删除光标后边的字符 | vim中的光标比较宽会盖住后边的字符 |
| X (大写) | 删除光标前边的字符 | 无 |
| dw | 删除单词 | dw表示delete a word,要先把光标移动到单词的第一个字母上再删除, 否则单词只能被删除一部分 |
| cw | 删除单词并进入编辑模式 | cw表示change a word,要先把光标移动到单词的第一个字母上再删除, 否则单词只能被删除一部分 |
| ci((,[,})或ci(),],}) | 删除()或[]或{}里的内容并进入编辑模式 | ci表示change in |
| s | 删除字母并进入编辑模式 | 只删除一个字母,并进入编辑模式,光标在删除的单词前 |
| d0 | 删除光标前的字符串 | 从字符串开头到光标当前位置的字符串被删除了 |
| d$ (D) | 删除光标后的字符串 | 从光标当前位置到字符串尾部的字符串被删除了, 使用 D也行 |
| dd | 删除光标所在行 | 无 |
| ndd | 删除n行 | 从光标所在行开始删除n行, n对应的是一个整数 |
撤销和反撤销
撤销和反撤销对应windows中的 ctrl+z和ctrl+y, 但是在vim中使用这两个快捷键是不行的。
| 快捷键 | 功能 | 备注 |
|---|---|---|
| u | 撤销 | u表示undo,等价于 windows 中的 ctrl+z |
| ctrl+r | 反撤销 | r表示redo,等价于 windows 中的 ctrl+y |
复制和粘贴
在vim中做删除操作就相当于剪切, 剪切或者复制之后的数据都可以用来做粘贴操作, 在vim中对应的快捷键如下:
| 快捷键 | 功能 | 备注 |
|---|---|---|
| p | 粘贴到光标所在行的下边 | p表示paste(粘贴),小写的 p |
| 数字n+p | 粘贴到光标所在行的下边,n份 | n是整数,小写的 p |
| P | 粘贴到光标所在行的上边 | 大写的 P |
| yy | 复制光标所在行 | y表示yank(猛拉) |
| 数字n+yy | 从光标所在行向下复制 n 行 | n是要复制的行数, 代表一个整数 |
| yw | 复制光标所在的单词 | yw表示yank a word |
重复操作
vim会自动记录你上次的操作,.可以执行上一次操作,在vim中对应的快捷键如下:
| 快捷键 | 功能 | 备注 |
|---|---|---|
| . | 执行上一次操作 | .(英语的句号) |
注释
vim可以直接注释单行和多行以及块,在vim中对应的快捷键如下:
| 快捷键 | 功能 | 备注 |
|---|---|---|
| gcc | 注释单行 | 无 |
| gc+数字n+j | 此行+向下注释n行 | 总注释n+1行 |
| gc+数字n+k | 此行+向上注释n行 | 总注释n+1行 |
| gc+((,[,{,},],)) | 注释一个块 | 无 |
编辑模式(INSERT)
按 i 或 Ins 进入编辑模式
切换到编辑模式
如果要编辑文件, 需要从命令模式切换到文件编辑模式, 切换模式的快捷键有很多, 不同的快捷键对应的效果有所不同, 效果如下表所示:
| 快捷键 | 功能 |
|---|---|
| i | i代表insert,从光标前边开始输入 |
| a | a代表append,从光标的后边开始输入 |
| o | o代表open a new line,在光标下边创建新行, 在新行中输入 |
| s | 删除光标后边的字符(盖住的字符), 从删除的字符位置开始输入 |
| I (大写的i) | 从当前行行首开始输入 |
| A | 从当前行行尾开始输入 |
| O | 在光标上边创建新行, 在新行中输入 |
| S | 删除当前行, 在当前行开始输入 |
| cw | 删除单词, 在当前行开始输入 |
| ci((,[,})或ci(),],}) | 删除()或[]或{}里的内容, 在当前行开始输入 |
💡文件编辑完成之后, 从编辑模式回到命令模式只需要按键盘上的Esc即可。

命令模式(COMMAND)
保存退出
使用vim对文件编辑完成之后, 需要保存或者退出vim一般都是在末行模式下完成的, 不管是进行那种操作都有对应的操作命令, 如下表:
| 命令 | 功能 |
|---|---|
| q | 退出, 如果退出的时候文件没有保存, vim会提示是否要保存 |
| q! | 直接退出, 不保存 (强制退出) |
| w | 保存, 不退出 (相当在windows中于按了ctrl+s) |
| wq | 保存退出 |
| x | 保存退出 |
替换
命令模式下的替换比正常模式下的替换功能要强大的多, 在命令模式下可以指定将什么样的内容替换为什么样的内容, 并且可以指定替换某一行或者某几行或者是全文替换。
替换对应的命令是 s 并且可以给其指定参数,默认情况下只替换相关行的第一个满足条件的关键字, 如果需要整行替换需要加参数/g。
| 命令 | 说明 |
|---|---|
| s/被替换的关键字/新的关键字/g | g表示global全局替换,只对光标所在行进行替换 |
| 行号1, 行号2s/被替换的关键字/新的关键字/g | [行号1 , 行号2] 是一个从小到大的范围, 对这个范围进行替换 |
| %s/被替换的关键字/新的关键字/g | %代表对所有行进行替换 |
查找
在vim的命令模式下一共有三种查找方式, 首先需要在键盘上输入对应的字符, 然后按回车键vim会进行关键字匹配, 之后就可以通过 n 或者N 进行关键字之间的切换了。
| 搜索快捷键 | 关键字遍历 | 描述 | 备注 |
|---|---|---|---|
| / | n | 从当前位置向下 | 直接按键盘上的 /即可 |
| N | 从当前位置向上 | ||
| ? | n | 从当前位置向上 | 直接按键盘上的 ?即可, 需要使用组合键 |
| N | 从当前位置向下 | ||
| # | n | 从当前位置向上 | 光标需要先放在被搜索的关键字上, 键盘上按 # |
| N | 从当前位置向下 |
💡关于 ? 和 # 都需要使用组合键, 这点要注意一下。
下面总结一下这三种搜索方式:
- 使用 / 或者 ? 搜索效果一样, 只是遍历关键字的时候的顺序是相反的
- 使用 # 必须先从被搜索的文件中找到要搜索的关键字, 好处就是搜索的内容不需要通过键盘输入
- 以上两种搜索方式各有优劣, 请根据实际情况选择使用。
视图模式(VISUAL)
在编辑文件的过程中, 有时候需要删除或者需要复制的数据不整行的, 而是一行中的某一部分, 这时候可以使用可视模式进行文本的选择, 之后再通过相关的快捷键对所选中的数据块进行复制或者删除操作。
有三种方式可以切换到可视模式:
- v: 进入的字符可视化模式(Characterwise visual mode),文本选择是以字符为单位的。
- V :进入的行可视化模式(Linewise visual mode),文本选择是以行为单位的。
- ctrl-v: 进入的块可视化模式(Blockwise visual mode),可以选择一个矩形内的文本。
进入到可视模式之后,就可以进行文本块的选择和复制以及删除了
| 快捷键 | 功能 | 备注 |
|---|---|---|
| h | 光标向左移动 | 移动光标用于可视模式下的数据块选择 |
| j | 光标向下移动 | 移动光标用于可视模式下的数据块选择 |
| k | 光标向上移动 | 移动光标用于可视模式下的数据块选择 |
| l | 光标向右移动 | 移动光标用于可视模式下的数据块选择 |
| d | 删除(剪切) | 删除可视模式下选中的数据块 |
| y | 复制 | 复制可视模式下选中的数据块 |
| p (小写) | 数据粘贴到光标的后边 | 粘贴在可视模式下复制或者剪切的数据块 |
| P (大写) | 数据粘贴到光标的前边 | 粘贴在可视模式下复制或者剪切的数据块 |
字符可视模式
控制光标方向用来选择文件中的不规则数据块, 可以对选中的文本信息进行复制和删除
1 | 进入到字符可视模式,直接在键盘上按 v 即可: |
通过 v 切换到字符可视模式之后, 在窗口的最下方会看到 – VISUAL-- 字样。
行可视模式
向下移动光标可以选择一整行, 向上移动光标可以取消整行选择
1 | 进入行可视模式, 键盘上按 shift+v |
通过 V 切换到行可视模式之后, 在窗口的最下方会看到 – VISUAL LINE – 字样。
块可视化模式
通过向上,下移动光标控制矩形文本块的高度,通过向左,右移动光标控制矩形文本块的宽度。
1 | 进入块可视模式, 选择一个矩形文本块 |
通过 ctrl+v 切换到块可视模式之后, 在窗口的最下方会看到 – VISUAL BLOCK – 字样。
VIM配置文件
vim 是一个文本编辑器工具, 这个工具也是有配置文件的,文件的名字叫做vimrc,在里边可以设置样式,功能, 快捷键等属性 。对应的配置文件分为两种 用户级别和系统级别。
- 用户级别的配置文件(~/.vimrc)只对当前用户有效
- 系统级别的配置文件(/ect/vim/vimrc)对所有Linux用户都有效
- 如果两个配置文件都设置了, 用户级别的配置文件起作用(用户级别优先级高)。