当前位置: 首页 > news >正文

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

目录

  • 🚀前言
  • 🤔Vim编辑器简介
  • ☘️Vim的三大模式
    • 💯模式切换的快捷键
  • 🌟Vim的常用命令
    • 💯命令模式
    • 💯编辑模式
    • 💯退出模式
  • 🐧持久化设置
    • 💯为什么需要“持久化”?
    • 💯实现方式:编辑 Vim 配置文件
    • 💯临时 vs 持久化
    • 💯进阶技巧
  • 💻官方入门教程

🚀前言

在这里插入图片描述

大家好!我是 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 expandtabTab 键 输入转为空格(需结合 shiftwidth 定义空格数)
  • 持久化设置:若需永久生效,需修改 ~/.vimrc 配置文件(如 set number 加入配置)。
  • 分隔符灵活用:替换命令的分隔符可换为 #@(如 :s@old@new@g),避免与关键字冲突。

🐧持久化设置

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

💯为什么需要“持久化”?

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

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

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

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

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

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

    vim ~/.vimrc
    

    如果文件不存在,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. 注释配置:用 " 开头写注释,方便整理配置逻辑:

    " 【缩进相关】
    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 终端输入
vimtutor

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

http://www.dtcms.com/a/344525.html

相关文章:

  • MiniCPM-V4.0开源并上线魔乐社区,多模态能力进化,手机可用,还有最全CookBook!
  • WebRTC 结合云手机:释放实时通信与虚拟手机的强大协同效能
  • 聚焦科技前沿,华金证券与非凸科技共探数智交易新路径
  • 【GaussDB】全密态等值查询功能测试及全密态技术介绍
  • UNIKGQA论文笔记
  • SYBASE ASE、Oracle、MySQL/MariaDB、SQL Server及PostgreSQL在邮件/短信发送功能上的全面横向对比报告
  • 全景式综述|多模态目标跟踪全面解析:方法、数据、挑战与未来
  • #Datawhale 组队学习#8月-工作流自动化n8n入门-2
  • 基于51单片机的超声波液位检测OLED显示设计
  • MySQL InnoDB表空间深度解析:从原理到性能优化
  • Seaborn数据可视化实战:Seaborn与Plotly交互式图表入门
  • 图像处理中的伪影
  • ASPICE过程能力确定——度量框架
  • 美国对华科技政策思路变化:产业影响与投资逻辑解析
  • C/C++三方库移植到HarmonyOS平台详细教程
  • 2025年推理大模型有哪些以及优势对比
  • C++函数重载与引用详解
  • 线段树01
  • 合同差异智能比对,有效规避“阴阳合同”
  • 白名单过滤的文件上传如何bypass:boot2root靶机之fristileaks
  • 基于 SkyWalking + Elasticsearch + Grafana 的可落地调用链监控方案
  • 易混淆的CommonJS和ESM(ES Module)及它们区别
  • 工控/医疗设备没有连接网络,贝锐向日葵Q1破解远程运维难题
  • 【ElasticSearch】IK分词器安装,配置修改,支持新增词组,中文常用mapping使用案例
  • Python 中 SQLAlchemy 和 MySQLdb 的关系
  • MongoDB 分片集群把非分片集合转成分片集合
  • MySQL 错误码
  • Flutter Provider 详解:从状态管理痛点到实战落地
  • Linux权限详解
  • 电子基石:硬件工程师的器件手册 (十三) - 电源管理IC:能量供给的艺术