参考资料:鳥哥私房菜 - 第九章、vim 程式編輯器
1. vim 概述
1.1 什么是 vim
- vi:Unix-like系统中内建的标准文本编辑器
- vim:Vi IMproved,vi的进阶版本,增加了颜色显示、语法检查等功能
- 几乎所有Linux发行版都会内置vi/vim,很多软件的编辑界面也会主动调用vi(如crontab、visudo等)
1.2 为什么要学习 vim
- 所有Unix Like系统都会内建vi编辑器,其他编辑器不一定存在
- 很多Linux指令默认使用vi作为编辑界面
- vim具有程序编辑能力,能以颜色辨别语法正确性
- 编辑速度快,功能强大
1.3 vim 的主要功能
- 语法高亮显示
- 支持正则表达式的搜索
- 多文件编辑
- 区块复制/粘贴
- 多窗口功能
2. vim 的三种模式
vim共有三种模式,这三种模式的相互切换是vim操作的核心:
2.1 一般指令模式(Normal Mode)
- 用
vim filename打开文件后即进入此模式
- 可以使用上下左右键移动光标
- 可以进行删除字符、删除整行、复制、粘贴等操作
2.2 编辑模式(Insert Mode)
- 在一般指令模式下,按
i、I、a、A、o、O、r、R任意键进入
- 左下角会出现
-- INSERT --字样
- 可进行文字输入
- 按
ESC键退出编辑模式,返回一般指令模式
2.3 指令列命令模式(Command-line Mode)
- 在一般指令模式下,按
:、/、?任意键进入
- 可执行保存、退出、搜索、替换等操作
- 按
ESC键退出
2.4 三种模式的切换关系
- 一般指令模式 ⇄ 编辑模式(按ESC返回)
- 一般指令模式 ⇄ 指令列模式
- 编辑模式与指令列模式之间不能直接切换
3. 一般指令模式常用操作
3.1 光标移动
| 操作键 |
说明 |
h 或 ← |
向左移动一个字符 |
j 或 ↓ |
向下移动一行 |
k 或 ↑ |
向上移动一行 |
l 或 → |
向右移动一个字符 |
Ctrl + f |
向下翻一页 |
Ctrl + b |
向上翻一页 |
Ctrl + d |
向下翻半页 |
Ctrl + u |
向上翻半页 |
0 或 Home |
移动到当前行首 |
$ 或 End |
移动到当前行尾 |
G |
移动到文件最后一行 |
gg |
移动到文件第一行 |
nG |
移动到第n行 |
n + Enter |
向下移动n行 |
3.2 搜索与替换
| 操作键 |
说明 |
/word |
向下搜索word |
?word |
向上搜索word |
n |
继续下一个搜索匹配 |
N |
上一个搜索匹配 |
:n1,n2s/word1/word2/g |
将n1到n2行的word1替换为word2 |
:1,$s/word1/word2/g |
全局替换 |
:1,$s/word1/word2/gc |
全局替换(逐个确认) |
3.3 删除操作
| 操作键 |
说明 |
x 或 Del |
向后删除一个字符 |
X 或 Backspace |
向前删除一个字符 |
nx |
向后删除n个字符 |
dd |
删除光标所在整行 |
ndd |
向下删除n行 |
dG |
删除光标所在行到文件末尾 |
d0 |
删除光标处到行首 |
d$ |
删除光标处到行尾 |
3.4 复制与粘贴
| 操作键 |
说明 |
yy |
复制光标所在整行 |
nyy |
向下复制n行 |
yG |
复制光标所在行到文件末尾 |
y0 |
复制光标处到行首 |
y$ |
复制光标处到行尾 |
p |
在光标下一行粘贴 |
P |
在光标上一行粘贴 |
3.5 撤销与重做
| 操作键 |
说明 |
u |
撤销上一个操作 |
Ctrl + r |
重做上一个操作 |
. |
重复上一个操作 |
3.6 区块选择(Visual Mode)
| 操作键 |
说明 |
v |
字符选择模式 |
V |
行选择模式 |
Ctrl + v |
区块选择模式(矩形选择) |
y |
复制所选区块 |
d |
删除所选区块 |
p |
粘贴所选区块 |
4. 进入编辑模式的按键
| 操作键 |
说明 |
i |
从光标所在处前开始插入 |
I |
从光标所在行行首开始插入 |
a |
从光标所在处后开始插入 |
A |
从光标所在行行尾开始插入 |
o |
在光标所在行下方插入新行 |
O |
在光标所在行上方插入新行 |
r |
替换光标处字符一次(不进入插入模式) |
R |
进入替换模式,连续替换直到按ESC |
ESC |
退出编辑模式,返回一般指令模式 |
5. 指令列模式常用命令
5.1 文件操作
| 命令 |
说明 |
:w |
保存文件 |
:w! |
强制保存 |
:q |
退出vim |
:q! |
强制退出(不保存修改) |
:wq |
保存并退出 |
:x |
保存并退出(同:wq) |
ZZ |
保存并退出(快捷键,等同于:wq) |
:w [file] |
另存为file |
:r [file] |
将file内容读入光标下一行 |
5.2 环境设置
| 命令 |
说明 |
:set nu |
显示行号 |
:set nonu |
取消行号 |
:set readonly |
设为只读模式 |
:set noexec |
禁止执行 |
:set all |
查看所有设定值 |
5.3 外部命令执行
| 命令 |
说明 |
:! command |
暂时离开vim执行外部命令 |
6. 多文件与多窗口编辑
6.1 多文件编辑
| 命令 |
说明 |
vim file1 file2 |
同时打开多个文件 |
:n |
编辑下一个文件 |
:N |
编辑上一个文件 |
:files |
列出当前vim打开的所有文件 |
6.2 多窗口编辑
| 命令 |
说明 |
:sp [filename] |
水平分割窗口 |
:vsp [filename] |
垂直分割窗口 |
Ctrl + w + j 或 Ctrl + w + ↓ |
移动到下方窗口 |
Ctrl + w + k 或 Ctrl + w + ↑ |
移动到上方窗口 |
Ctrl + w + q |
退出当前窗口 |
7. vim 环境设置
7.1 vimrc 配置文件
- 系统配置文件:
/etc/vim/vimrc
- 个人配置文件:
~/.vimrc
- 通过配置文件可永久保存vim设定
7.2 常用 vimrc 设置
1 2 3 4 5 6
| set nu " 显示行号 set autoindent " 自动缩进 set tabstop=4 " Tab键宽度4空格 set expandtab " 将Tab转换为空格 set hlsearch " 高亮搜索结果 syntax on " 语法高亮
|
8. vim 暂存盘与恢复
8.1 暂存盘机制
- vim编辑文件时会自动创建暂存盘(swap file)
- 文件名格式:
.filename.swp
- 用于系统崩溃时的文件恢复
8.2 暂存盘状态
| 状态 |
说明 |
[O] |
只读打开 |
[E] |
直接编辑 |
[R] |
恢复文件 |
[D] |
删除暂存盘 |
[Q] |
退出 |
9. 其他实用功能
9.1 文件编码转换
1
| iconv -f 原编码 -t 新编码 文件名 -o 新文件名
|
9.2 换行符转换
1 2
| dos2unix 文件名 unix2dos 文件名
|
9.3 代码补全
在编辑模式(插入模式)下:
10. 本章重点命令速查
| 命令/按键 |
用途 |
vim file |
打开/创建文件 |
i |
进入编辑模式 |
ESC |
退出编辑模式 |
:w |
保存 |
:q |
退出 |
:wq / ZZ |
保存并退出 |
:q! |
强制退出不保存 |
dd |
删除整行 |
yy |
复制整行 |
p / P |
粘贴 |
u |
撤销 |
Ctrl + r |
重做 |
/word |
搜索 |
:n1,n2s/old/new/g |
替换 |
:set nu |
显示行号 |
:sp |
水平分窗口 |
Ctrl + v |
区块选择 |
:! command |
执行外部命令 |
11. 核心要点
11.1 vim 学习建议
- 记住三种模式的切换方法是使用vim的基础
- 常用按键只需记住:
i(进入编辑)、ESC(退出编辑)、:wq(保存退出)即可开始使用
- 数字有重复操作的意义,如
5yy表示复制5行
- 小数点
.可重复上一次操作,非常实用
G移动到文件尾、gg移动到文件头,这两个快捷键使用频率最高
11.2 重点快捷键
| 功能 |
快捷键 |
| 复制行 |
yy |
| 删除行 |
dd |
| 粘贴 |
p / P |
| 撤销 |
u |
| 搜索 |
/word |
| 替换 |
:s/old/new/g |
| 保存退出 |
ZZ |