Linux学习日志(6) vim程序编辑器

参考资料:鳥哥私房菜 - 第九章、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)

  • 在一般指令模式下,按iIaAoOrR任意键进入
  • 左下角会出现-- 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 向上翻半页
0Home 移动到当前行首
$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 删除操作

操作键 说明
xDel 向后删除一个字符
XBackspace 向前删除一个字符
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 + jCtrl + w + ↓ 移动到下方窗口
Ctrl + w + kCtrl + 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 文件名    # Windows格式 → Unix格式
unix2dos 文件名 # Unix格式 → Windows格式

9.3 代码补全

在编辑模式(插入模式)下:

  • Ctrl + xCtrl + o:代码补全

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