【Linux】#7 | vi/vim 编辑器

一、vi/vim 简介

vi 是 visual interface 的简称,是 Linux 中最经典的文本编辑器。 同图形化界面中的文本编辑器一样,vi 是命令行下对文本文件进行编辑的最佳选择。

vim 是 vi 的加强版本,完全兼容 vi 的所有指令。不仅能编辑文本,还支持 shell 程序编辑,可以用不同颜色字体辨别语法正确性,极大方便程序的设计与编辑。

vi/vim 一共分为三种工作模式:

  1. 命令模式 :打开文件默认进入。敲击按键会被识别为命令,不能直接编辑文本。
  2. 输入模式(插入 / 编辑模式) :可以自由输入、修改文本。按下 Esc 返回命令模式。
  3. 底线命令模式 :在命令模式输入 : 进入,多用于文件保存、退出、编辑器配置。

二、基础语法

复制代码
vi 文件路径
vim 文件路径
  • 如果路径对应的文件不存在:命令会新建文件并进入编辑
  • 如果文件已经存在:打开已有文件进行编辑

打开文件后,默认处于 命令模式

三、快速上手体验(完整操作流程)

  1. 执行命令 vim hello.txt,新建 / 打开文件,进入命令模式
  2. 命令模式按下 i,切换到输入模式
  3. 在输入模式输入文本:itheima and itcast
  4. 输入完毕,按下 Esc,退回命令模式
  5. 命令模式输入 :,进入底线命令模式
  6. 底线命令输入 wq,保存文件并退出 vim 编辑器

四、命令模式快捷键

4.1 命令模式 → 输入模式切换

表格

模式 命令 描述
命令模式 i 在当前光标位置进入输入模式
命令模式 a 在当前光标位置之后进入输入模式
命令模式 I(大写) 在当前行的开头,进入输入模式
命令模式 A(大写) 在当前行的结尾,进入输入模式
命令模式 o(小写) 在当前光标下一行新建空行,进入输入模式
命令模式 O(大写) 在当前光标上一行新建空行,进入输入模式
输入模式 Esc 任何时候按下 Esc,回到命令模式

4.2 命令模式:复制 / 删除 / 撤销 / 光标跳转

表格

模式 命令 描述
命令模式 dd 删除光标所在行的内容
命令模式 ndd n 为数字,删除当前光标向下 n 行
命令模式 yy 复制当前行
命令模式 nyy n 为数字,复制当前行以及下方 n 行
命令模式 p 粘贴已经复制的内容
命令模式 u 撤销修改
命令模式 ctrl + r 反向撤销(恢复被撤销的内容)
命令模式 gg 光标跳到文档首行
命令模式 G 光标跳到文档末尾行
命令模式 dG 从当前行开始,向下全部删除
命令模式 dgg 从当前行开始,向上全部删除
命令模式 d$ 从当前光标开始,删除到本行的结尾
命令模式 d0 从当前光标开始,删除到本行的开头

五、底线命令模式(输入 : 开启)

表格

模式 命令 描述
底线命令模式 :wq 保存并退出
底线命令模式 :q 仅退出(有修改时无法退出)
底线命令模式 :q! 强制退出,不保存修改
底线命令模式 :w 仅保存,不退出
底线命令模式 :set nu 显示行号
底线命令模式 :set paste 设置粘贴模式(粘贴代码避免自动缩进错乱)

复习小结

  1. 模式流转:打开文件 → 命令模式 ;i/a/o → 输入模式;Esc 回到命令模式;命令模式输入 : → 底线命令模式。
  2. 核心记忆:yy复制、dd删除、p粘贴;u撤销;:wq保存退出。
相关推荐
HideF9 小时前
Linux sudo
linux
FlightYe9 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
蹊黎10 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
牛马鸡niumasi11 小时前
【Linux】C语言文件操作
linux
say_fall11 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
wacsii12 小时前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器
AI+程序员在路上12 小时前
RV1126B 上支持的模型及全流程应用--从CNN及语音到 LLMVLM 与跨平台选型
linux·c语言·人工智能
默|笙13 小时前
【Linux网络】传输层协议TCP(1)---TCP报文介绍
linux·网络·tcp/ip
相思难忘成疾13 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
用户41071920132513 小时前
用 systemd 从零做一个系统健康巡检服务:脚本、沙箱与磁盘满排查实战
linux·ubuntu