前言
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
一、vim是什么?
vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
二、vim的使用
1. vim的三种模式
基本上 vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
1.1 命令模式(Command mode)
当我们在命令行输入vim,就启动了vim,进入了命令模式。
此状态下敲击键盘动作会被vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
- i 切换到输入模式,以输入字符。
- x 删除当前光标所在处的字符。
- : 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
1.2 输入模式(Insert mode)
在命令模式下进入输入模式的方式:
- 输入a
- 输入i
- 输入o
在输入模式中,可以使用以下按键:
- 字符按键以及Shift组合,输入字符
- Enter,回车键,换行
- Back space,退格键,删除光标前一个字符
- Del,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- Home/End,移动光标到行首/行尾
- Page Up/Page Down,上/下翻页
- Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
- Esc,退出输入模式,切换到命令模式
1.3 底线命令模式(Last line mode)
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
按ESC键可随时退出底线命令模式。
简单的说,我们可以将这三个模式想成底下的图标来表示:
2. vim命令集
2.1 vim命令模式命令集
- 进入输入模式:
命令 | 说明 |
按「i」 | 进入插入模式「insert mode」,按 “i” 进入插入模式后是从光标当前位置开始输入文件 |
按「a」 | 进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字 |
按「o」 | 进入插入模式后,是插入新的一行,从行首开始输入文字 |
- 从插入模式切换为命令模式
按「ESC」键 |
- 移动光标
命令 | 说明 |
按「h」 | 左移一格 |
按「j」 | 下移一格 |
按「k」 | 上移一格 |
按「l」 | 右移一格 |
按「G」 | 移动到文章的最后 |
按「$」 | 移动到光标所在行的“行尾” |
按「^」 | 移动到光标所在行的“行首” |
按「w」 | 光标跳到下个字的开头 |
按「e」 | 光标跳到下个字的字尾 |
按「b」 | 光标回到上个字的开头 |
按「#l」 | (#代表数字)光标移到该行的第#个位置,如:5l,56l |
按[gg] | 进入到文本开始 |
按[shift+g] | 进入文本末端 |
按「ctrl」+「b」 | 屏幕往“后”移动一页 |
按「ctrl」+「f」 | 屏幕往“前”移动一页 |
按「ctrl」+「u」 | 屏幕往“后”移动半页 |
按「ctrl」+「d」 | 屏幕往“前”移动半页 |
- 删除文字
命令 | 说明 |
按「x」 | 每按一次,删除光标所在位置的一个字符 |
按「#x」 | 例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符 |
按「X」 | 大写的X,每按一次,删除光标所在位置的“前面”一个字符 |
按「#X」 | 例如,「20X」表示删除光标所在位置的“前面”20个字符 |
按「dd」 | 删除光标所在行 |
按「#dd」 | 从光标所在行开始删除#行 |
- 复制
命令 | 说明 |
按「yw」 | 将光标所在之处到字尾的字符复制到缓冲区中。 |
按「#yw」 | 复制#个字到缓冲区 |
按「yy」 | 复制光标所在行到缓冲区。 |
按「#yy」 | 例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。 |
按「p」 | 将缓冲区内的字符贴到光标所在位置。 |
注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
- 替换
命令 | 说明 |
按「r」 | 替换光标所在处的字符 |
按「R」 | 替换光标所到之处的字符,直到按下「ESC」键为止 |
- 撤销上一次操作
命令 | 说明 |
按「u」 | 如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复 |
按「ctrl + r」 | 撤销的恢复 |
- 更改
命令 | 说明 |
按「cw」 | 更改光标所在处的字到字尾处 |
按「c#w」 | 例如,「c3w」表示更改3个字 |
- 跳至指定的行
命令 | 说明 |
按「ctrl」+「g」 | 列出光标所在行的行号 |
按「#G」 | 例如,「15G」,表示移动光标至文章的第15行行首 |
2.2 vim底线模式命令集
在使用末行模式之前,请记住先按「ESC」键确定已经处于正常模式,再按「:」冒号即可进入末行模式。
- 列出行号
命令 | 说明 |
输入「set nu」 | 输入「set nu」后,会在文件中的每一行前面列出行号 |
- 跳到文件中的某一行
命令 | 说明 |
输入数字「#」 | 「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行 |
- 查找字符
命令 | 说明 |
「/关键字」 | 先按「/」键,再输入想寻找的字符,如果第一次找的关键字不是想要的,可以一直按「n」会往后寻找到想要的关键字为止 |
「?关键字」 | 先按「?」键,再输入想寻找的字符,如果第一次找的关键字不是想要的,可以一直按「n」会往前寻找到想要的关键字为止 |
- 保存文件
命令 | 说明 |
「w」 | 在冒号输入字母「w」就可以将文件保存起来 |
- 离开vim
命令 | 说明 |
「q」 | 按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim |
「wq」 | 一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件 |