【Linux入门】Vi / Vim 编辑器全攻略

一、什么是 VI / VIM

  • VI 是 Unix 和类 Unix 操作系统中最通用的文本编辑器。
  • VIM 是从 VI 发展而来的更强大的文本编辑器,可以主动用字体颜色辨别语法的正确性,方便程序设计。
  • VIM 与 VI 完全兼容,是 VI 的超集,所以在 Linux 中输入 vivim 都可以使用。

打开文件的方式:

vi 文件名
vim 文件名
vim file1 file2      # 同时打开多个文件

二、三种模式

Vim 有三种核心模式:

模式作用
一般模式(Normal Mode)打开文件默认进入,可移动光标、删除、复制、粘贴
编辑模式(Insert Mode)输入内容、修改文本
指令模式(Command-line Mode)保存、退出、查找、替换、显示行号等

三、模式间转换

  • 一般模式 → 编辑模式:按下 iIaAoO 中任一按键。
  • 编辑模式 → 一般模式:按下 Esc 键。
  • 一般模式 → 指令模式:输入 :/? 中的任意一个。
  • 指令模式 → 一般模式:执行完命令后自动返回,或按 Esc 取消。
一般模式  --i/I/a/A/o/O-->  编辑模式
一般模式  --: 或 / 或 ?-->  指令模式
编辑/指令模式  --Esc-->  一般模式

四、一般模式:光标移动

vi 打开文件后默认进入一般模式,此模式下可以移动光标、删除字符/整行、复制粘贴等。

操作功能描述
方向键 / h j k l左、下、上、右移动光标(h j k l 是经典手势)
w / W跳到下一个单词开头
b / B跳到上一个单词开头
0移动到行首(第 0 个字符)
^(Shift+6)移动到行首第一个非空字符
$(Shift+4)移动到行尾
gg1G移动到文件开头(第一行)
G(Shift+g)移动到文件末尾(最后一行)
数字+G(如 100G移动到指定行
Ctrl + d / Ctrl + u向下 / 向上翻半页

五、一般模式:删除、复制、粘贴

语法功能描述
yy复制光标当前一行
y数字y复制从当前行起若干行(如 3yy 复制 3 行)
yw复制一个词
p在光标下一行粘贴复制的内容
P(大写)在光标上一行粘贴
u撤销上一步操作
Ctrl + r重做(取消撤销)
dd删除光标当前行
d数字d删除从当前行(含)起若干行(如 3dd 删除 3 行)
dw删除一个词
d$删除光标位置到行尾
d^删除光标位置到行首
dG删除从当前行到文件末尾
x删除光标处一个字符,相当于 Del
X删除光标前一个字符,相当于 Backspace

六、编辑模式

在一般模式中只能进行删除、复制、粘贴等操作,无法直接编辑文件内容。 必须按下 i, I, o, O, a, A 等任一字母后才进入编辑模式。

进入编辑模式后,画面左下方会出现 INSERT 或 REPLACE 字样,此时才能输入内容。按 Esc 键退出编辑模式,回到一般模式。

按键功能
i在当前光标之前插入
a在当前光标之后插入
o在当前光标行的下一行插入
I在当前行行首插入
A在当前行行尾插入
O在当前光标行的上一行插入
r替换光标所在的一个字符(不进入编辑模式)
R连续替换模式(相当于持续覆盖输入)

七、指令模式

在一般模式中输入 :/? 中任意一个,即可进入指令模式,光标会移动到最底下一行。指令模式用于:查找、保存、退出、批量替换、显示行号等。

7.1 保存与退出

命令功能
:w保存
:q退出
:wq保存并退出
:wq!强制写入并退出(当文件只读或权限不足时使用)
:q!强制退出(不保存修改)
:x保存并退出(等同于 :wq)
ZZ在一般模式下直接保存并退出

说明::! 本身并不是"强制执行"命令。真正用于强制的写法是 :w!(强制保存)和 :q!(强制退出);而 :!命令 的用法是在 Vim 中执行外部命令,如 :!ls

7.2 查找

命令功能
/要查找的词向下查找;按 n 查找下一个,按 N 往上查找
?要查找的词向上查找;按 n 继续向上,按 N 向下
:noh:nohlsearch取消查找结果的高亮显示

7.3 显示行号

命令功能
:set nu显示行号
:set nonu关闭行号

7.4 批量替换

命令功能
:%s/old/new/g把全文所有 old 替换为 new,g 表示替换匹配到的所有内容(不加 g 只替换每行第一个匹配)
:s/old/new/g只替换当前行所有匹配
:3,10s/old/new/g替换第 3 到 10 行范围内的所有匹配

八、案例实操

(1)打开文件、进入编辑模式输入内容并保存退出:

vim test.txt
# 输入 i 进入编辑模式
# 输入内容
# 按 Esc 退出编辑模式
# 输入 :wq 回车,保存并退出

(2)强制保存退出:

:wq!

(3)给文件开启行号后跳转到指定行并查看:

vim test.txt
:set nu        # 显示行号
:15            # 跳转到第 15 行

九、补充技巧

  • vimtutor:Vim 自带交互式教程,输入 vimtutor 可系统学习,强烈推荐新手过一遍。
  • 可视模式:在一般模式下按 v 进入可视模式,用方向键选中文本后再按 y 复制、d 删除。
  • 重复操作5yy 复制 5 行,5dd 删除 5 行,5x 删除 5 个字符。
  • 常见配置:在 ~/.vimrc 中写入以下内容可让 Vim 更好用:
set nu          # 默认显示行号
set tabstop=4   # Tab 键宽度为 4
syntax on       # 开启语法高亮
  • 多文件切换vim file1 file2 打开多个文件后,用 :n 切换到下一个文件,:prev 回到上一个文件。
  • 异常恢复:如果 Vim 异常退出留下交换文件(.swp),可以用 vim -r 文件名 尝试恢复未保存的内容。

十、常见问题与避坑

新手常见问题原因与解决办法
输入文字没反应 / 无法输入没进入编辑模式。按 i 等按键进入编辑模式后再输入
按 Esc 想退出却退不出去已经在一般模式,直接输入 :q:wq 即可
保存时提示 read-only文件只读或无权限,确认属主后用 :w! 强制保存,或 sudo vim 文件
改错了想撤销一般模式下按 u 撤销,Ctrl + r 重做
打开文件发现内容混乱可能用错了模式,按 Esc 回到一般模式,用 u 撤销误操作
退出时提示 No write since last change有未保存修改,用 :wq 保存退出,或 :q! 放弃修改强制退出
查找时输入中文没反应确保输入法处于半角英文状态

十一、总结

  • Vim 有三种模式:一般模式、编辑模式、指令模式。
  • 编辑内容前必须先进入编辑模式(i/a/o 等)。
  • 保存退出 :wq、强制退出 :q!、强制保存 :wq!
  • 多练 vimtutor,熟能生巧。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值