【Linux】Vim编辑器:从入门到高效使用

目录

🚀前言

大家好!我是 EnigmaCoder

  • 本文将介绍Vim编辑器的三大模式及其常见的命令,同时也介绍持久化设置和官方入门教程。

🤔Vim编辑器简介

VimLinux系统中广泛使用的一款高效文本编辑器,作为vi编辑器的升级版本,它不仅能实现基本的文件查看、编辑和保存功能,还新增了语法高亮显示和语法检测等实用特性。

  • Vim的优点:
    • 极致高效的模块化编辑,摆脱鼠标依赖。
    • 轻量化与全场景适配,是跨场景文本处理的"万能工具"。
    • 成熟生态与兼容性,学习成本和使用成本低。

☘️Vim的三大模式

  • 命令模式:可以实现基础的复制、粘贴、删除内容以及页面跳转操作。
  • 编辑模式/插入模式:可以编辑文本的内容、进行增删改操作。
  • 退出模式/末行模式:可以保存文件或另存为文件。

💯模式切换的快捷键

  1. 从命令模式切换到编辑模式:
快捷键 说明
i 光标所在处切换到编辑模式
a 光标后面一个字符切换到编辑模式
o 光标所在行的下一行切换到编辑模式
s 删除光标所在处的字符切换到编辑模式
I 光标所在行的最前面切换到编辑模式
A 光标所在行的最后面切换到编辑模式
O 光标所在处的上一行切换到编辑模式
S 删除光标所在行的整行内容切换到编辑模式
  1. 从命令模式切换到退出模式:Shift :组合键
  2. 从退出模式/插入模式切换到命令模式:ESC

打开文件默认进入命令模式,编辑模式和退出模式无法直接切换,中间必须经过命令模式。

🌟Vim的常用命令

💯命令模式

命令模式下的常用命令:

命令 功能描述
yy 复制当前光标所在的行
P 光标所在行的下一行进行粘贴
p 光标所在行的上一行进行粘贴
dd 删除光标所在行整行的内容
dG 删除光标所在行及其后面的所有内容
nG(n表示数字) 跳转到第n行内容
G 跳转到最后一行
gg 跳转到文件的第一行
x 删除光标所在处的单个字符
u 撤销上一个操作
/关键字 可以匹配关键字,输入'n'进行下一个关键字的跳转,输入'N'跳转到上一个关键字

这些命令用于实现光标快速移动、文本编辑(删/复/粘/改)、调用行命令及切换其他模式,是Vim高效操作的核心指令。

💯编辑模式

编辑模式下的常用命令:

命令 功能描述
退出编辑模式
EscCtrl + [ 退出编辑模式,返回命令模式(最常用)
Ctrl + c 功能同 Esc,退出编辑模式(部分环境可能有差异)
文本删除
Ctrl + h 删除光标前的一个字符(相当于退格键 Backspace
Ctrl + w 删除光标前的一个单词(以空格、标点等为分隔符)
Ctrl + u 删除从光标位置到行首的所有内容
临时执行命令模式命令
Ctrl + o 临时进入命令模式,执行一个命令后自动返回编辑模式(如快速保存 :w
插入特殊字符
Ctrl + v 插入特殊字符(如 Ctrl + v + Enter 插入换行符 ^MCtrl + v + 065 插入 A
自动补全
Ctrl + x + Ctrl + f 补全文件名
Ctrl + x + Ctrl + l 补全整行(基于当前文件已有内容)
Ctrl + x + Ctrl + n 补全当前文件中出现过的单词
Ctrl + x + Ctrl + k 补全字典中的单词(需配置字典路径)
缩进调整
Ctrl + t 编辑模式下,将当前行向右缩进(增加缩进)
Ctrl + d 编辑模式下,将当前行向左缩进(减少缩进)

这些命令主要用于在编辑模式下高效编辑文本,减少切换到命令模式的频率。如果需要更复杂的操作(如批量替换、行跳转等),通常还是需要切换到命令模式执行。

💯退出模式

退出模式下的命令:

命令 功能描述
基础跳转/定位
:nn 为数字) 跳转到第 n
:1 跳转到第 1 行(等效普通模式 gg
:$ 跳转到最后一行(等效普通模式 G
保存与退出
:w 路径 将当前文件另存为指定路径(如 :w ~/backup.txt
:w! 强制保存(忽略只读属性,需系统权限)
:wq 保存并退出(写入+退出)
:x 保存并退出(同 :wq,但文件无修改时不更新修改时间
:q 正常退出(文件无修改时生效,否则拒绝退出)
:q! 强制退出,丢弃未保存修改
内容操作
:%d 清空当前文件所有内容
:s/旧/新/ 替换当前行第一个 匹配项(不加 g
:s/旧/新/g 替换当前行所有匹配项
:s/旧/新/gi 替换当前行所有匹配项,忽略大小写i = ignore case)
:%s/旧/新/g 替换整个文件所有匹配项
:%s/旧/新/gi 全局替换+忽略大小写
:s#旧#新#g # 作分隔符(避免与路径中 / 冲突,如 :s#/old#/new#g
系统交互与扩展
:!命令 执行系统命令(如 :!ls 查目录、:!gcc % 编译当前文件)
窗口/分屏
:split 文件名 水平分屏打开文件(无文件名则分屏当前文件)
:vsplit 文件名 垂直分屏打开文件
:close 关闭当前分屏窗口
缓冲区管理
:bnext 切换到下一个缓冲区(已打开的其他文件)
:bprev 切换到上一个缓冲区
:bd 删除当前缓冲区(关闭文件,不退出 Vim)
设置类(临时生效)
:set number 显示行号
:set nonumber 关闭行号
:set hlsearch 高亮搜索匹配结果(如 /关键字 后,匹配项高亮)
:set nohlsearch 关闭搜索高亮
:set shiftwidth=4 设置自动缩进宽度为 4 个空格(需配合 expandtab 更规范)
:set expandtab Tab 键 输入转为空格(需结合 shiftwidth 定义空格数)
  • 持久化设置 :若需永久生效,需修改 ~/.vimrc 配置文件(如 set number 加入配置)。
  • 分隔符灵活用 :替换命令的分隔符可换为 #@(如 :s@old@new@g),避免与关键字冲突。

🐧持久化设置

在 Vim 中,持久化设置 指让配置(如行号显示、缩进规则等)永久生效,而非仅当前会话有效。以下是核心原理和实现方法:

💯为什么需要"持久化"?

临时设置(如 :set number)仅对当前 Vim 窗口 有效,关闭后就会重置。如果想让配置"记住"你的习惯(比如每次打开都显示行号、Tab 自动转空格),就需要 持久化配置

💯实现方式:编辑 Vim 配置文件

Vim 会自动加载用户目录下的 .vimrc 文件(隐藏文件),将设置命令写入该文件,即可实现"启动即生效"。

  1. 配置文件位置
系统 配置文件路径 说明
Linux/Mac ~/.vimrc(用户主目录下) 仅对当前用户生效
Windows C:\Users\你的用户名\_vimrc 需手动创建(若不存在)
  1. 编辑配置文件的步骤

Linux/Mac 为例(Windows 操作类似):

  • 打开配置文件:在终端或 Vim 中执行

    vim 复制代码
    vim ~/.vimrc

    如果文件不存在,Vim 会自动新建。

  • 添加持久化设置

    在文件中写入需要永久生效的命令,每行一条。例如:

    vim 复制代码
    " 显示行号(引号开头是注释,方便记录)
    set number  
    
    " Tab 按一下,自动插入 4 个空格(规范缩进)
    set expandtab  
    set shiftwidth=4  
    
    " 搜索时实时高亮匹配结果
    set hlsearch  
    set incsearch  
    
    " 显示光标所在行列号
    set ruler  
  • 保存退出 :按 :wq 保存并退出 Vim。

  • 立即生效 :下次启动 Vim 时,配置会自动加载;也可通过 :source ~/.vimrc 命令,无需重启 直接应用新配置。

💯临时 vs 持久化

操作 作用范围 重启后是否保留
:set number 仅当前 Vim 窗口 ❌ 不保留
写入 .vimrc 所有新启动的 Vim 窗口 ✅ 永久保留

💯进阶技巧

  1. 注释配置 :用 " 开头写注释,方便整理配置逻辑:

    vim 复制代码
    " 【缩进相关】
    set expandtab      " Tab → 空格
    set shiftwidth=4   " 自动缩进 4 个空格
  2. 覆盖系统配置

    系统级配置文件(如 /etc/vim/vimrc)会先加载,再加载用户的 ~/.vimrc用户配置优先级更高,可覆盖系统默认设置。

  3. 恢复默认

    • 临时关闭:执行 :set nonumber(仅当前会话);
    • 永久关闭:删除 .vimrc 里的 set number 行(需重启或 :source 生效)。

简单来说:把临时生效的 :set xxx 命令"抄"进 .vimrc,就能让配置"永远记住"你的习惯 。如果想定制更复杂的 Vim 环境(比如主题、快捷键),.vimrc 也是核心入口。

💻官方入门教程

Linux 中练习 Vim,可以选择优先从官方自带的交互式教程入手,它是 Vim 自带的免费教程,分 8 个章节,从基础光标移动、编辑到保存退出, step-by-step 引导,适合纯新手。

  • 启动命令:直接在 Linux 终端输入
bash 复制代码
vimtutor

按照教程提示,在 Vim 内直接操作(教程会教你如何移动、删除、修改文本),完成所有章节后,能掌握 70%的日常基础操作。

相关推荐
Clownseven15 分钟前
Linux服务器健康检查Shell脚本:一键生成自动化巡检报告
linux·服务器·自动化
时间裂缝里的猫-O-1 小时前
@Linux问题 :bash fork Cannot allocate memory 错误分析与解决方案
linux·chrome·bash
躺不平的小刘1 小时前
从YOLOv5到RKNN:零冲突转换YOLOv5模型至RK3588 NPU全指南
linux·python·嵌入式硬件·yolo·conda·pyqt·pip
果子⌂1 小时前
Git+Jenkins实战(一)
运维·git·jenkins
愚昧之山绝望之谷开悟之坡1 小时前
| `cat /etc/os-release` | 发行版详细信息(如 Ubuntu、CentOS) |
linux·ubuntu·centos
chenglin0161 小时前
Logstash——输出(Output)
运维·jenkins
苦逼IT运维1 小时前
Jenkins + SonarQube 从原理到实战四:Jenkins 与 Gerrit 集成并实现自动任务
运维·git·测试工具·ci/cd·jenkins
明天见~~3 小时前
Linux下的网络编程
linux·运维·网络
NEXU53 小时前
Linux:网络层IP协议
linux·网络·tcp/ip
Aczone283 小时前
Linux 软件编程(九)网络编程:IP、端口与 UDP 套接字
linux·网络·网络协议·tcp/ip·http·c#