Vim编辑器详解:从入门到高效使用
大家好,这里是彩妙呀~
作为Linux/Unix系统中的顶级文本编辑器,Vim以其卓越的编辑效率和强大的功能特性深受开发者喜爱。这款由Bram Moolenaar在1991年开发的Vi改进版编辑器,采用独特的模式化设计,通过纯键盘操作实现高效编辑,成为终端环境下的首选工具。无论新手还是资深开发者,掌握Vim都能极大提升工作效率。本文将全面介绍Vim的核心功能、实用技巧和配置方法,帮助您快速掌握并运用其强大功能。
目录
重谈yum
软件包管理器
那么,什么是软件包?
Linux中软件生态
下载的方法与本质
编辑器Vim => 一款让我们受用的重要编辑器之一
Vim的背景与重要性
Vim的核心模式与切换
vim基本操作方法
文件的打开与关闭
光标移动
文本的编辑操作
搜索与替换
显示行号
多文件操作
简单vim配置
在介绍vim之前,我们先回顾一下之前所说的内容:yum
重谈yum
谈yum之前,我们先学习一个基础概念:软件包管理器
软件包管理器
软件包管理器就像是Linux系统中的智能助手,它能够高效地处理软件安装、更新和维护等繁琐任务。这个"数字管家"能自动解决软件依赖关系,就像一位细心的采购员会帮你配齐所有需要的组件。通过简单的指令,它就能帮你完成从查找资源到安装配置的全过程,彻底告别手动下载、解压和版本管理的麻烦。
那么,什么是软件包?
在Linux中,如果你想安装软件。最推荐需要软件包。这是因为:在Linux环境下,安装软件的传统方法是下载程序的源代码,手动编译生成可执行文件。但是这种方法对于刚学习Linux的小白不太友好,因为其操作过程繁琐且容易出错(尤其是涉及到复杂依赖(比如外部库,环境配置,工具链等))且还需要你自己去自行解决这一系列问题。而为了简化这一过程,出现了“软件包”。
PS:安装软件的本质就是下载对应应用的压缩包,并解压到当前环境(linux/windows)。
在Linux中,安装软件通常有以下几个方法:
源码安装(不推荐):
在对应网站下载源码,并解压缩到linux中,再执行make => make install 这个命令。
优点:可自定义配置,适合特殊需求
缺点:步骤繁琐,依赖手动处理,新手慎用
(Red Hat系)软件包安装 -- rpm:
使用rpm
命令或yum/dnf
(自动处理依赖)。特点:安装快,但需注意系统兼容性
软件包管理器安装(centos中为yum,unbuntu中为apt / apt-get,两者虽然执行命令不一样,但原理大差不差):
优点:自动下载依赖、更新便捷、操作简单
软件包是软件分发的标准形式,其设计目的是解决传统源代码编译方式存在的效率低下和兼容性问题。
软件包通常包含:
- 可执行程序:编译好的二进制文件,可直接运行。
- 配置文件:默认设置和初始化脚本。
- 元数据:描述软件信息(如版本、作者)和依赖关系(即该软件运行所需的其他软件包)。
- 安装脚本:自动化安装或卸载的指令集。
笼统的来说,软件包在windows中相当于安装包、手机端的应用安装包。
而软件包与软件包管理器的关系就相当于手机中app与应用商店的关系一样。
Linux中软件生态
去评价一个操作系统的好坏,就是我们所说的生态问题:
生态问题包括但不限于以下几个方面(不作为本篇知识,所以不展开详聊):
- 社区和论坛支持
- 官方文档体系
- 软件生态系统
- 富有针对性的客户群体
- 维护更新机制
- 操作系统核心特性
那么,所对应的软件也都离不开这些问题。
我们要去下载所对应的软件,最主要离不开社区和论坛支持。绝大部分的软件都是通过这两个方面来获取的。应为大多数企业与软件使用者都离不开对应的社区与论坛,所以有些大企业通过募捐方式来使开发者继续维护他们所开发的软件。两者相互促进,和谐共生。
下载的方法与本质
通过软件包管理器下载软件,本质是在其官网搜寻并下载对应的安装包。在我们Linux(centos)中,在 /etc/yum.conf中去修改镜像源(速度更快)。
如何去更换并使用镜像源,可以看这个博主的文章
例如:去yum中下载sl文件:
运行sl:
yum/apt 具体操作
查看软件包
使用 yum list
(CentOS)或 apt search
(Ubuntu)命令可以列出可用软件包。由于数量庞大,通常配合 grep
命令筛选特定包名。例如:
# CentOS
$ yum list | grep lrzsz
lrzsz.x86_64 0.12.20-36.el7 @base# Ubuntu
$ apt search lrzsz
Sorting... Done
Full Text Search... Done
cutecom/focal 0.30.3-1build1 amd64Graphical serial terminal, like minicom
lrzsz/focal,now 0.12.21-10 amd64 [installed]Tools for zmodem/xmodem/ymodem file transfer$ apt show lrzsz # 查看更详细信息
Package: lrzsz
Version: 0.12.21-10
Priority: optional
Section: universe/comm
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Martin A. Godisch <godisch@debian.org>
...
注意事项:
- 软件包名称格式: 通常为
主版本号.次版本号.源程序发行号-软件包发行号.主机平台.CPU架构
。 - 平台标识:
x86_64
表示 64 位系统包,i686
表示 32 位系统包。需与系统架构匹配。 - 发行版版本:
el7
表示 CentOS 7 / Red Hat 7,el6
表示 CentOS 6 / Red Hat 6。 - 软件源标识: 最后一列(如
@base
)表示软件来源仓库的名称,类似于应用商店的概念。
1-3-2 安装软件
使用 yum install
(CentOS)或 apt install
(Ubuntu)命令可便捷安装软件:
# CentOS
$ sudo yum install -y lrzsz# Ubuntu
$ sudo apt install -y lrzsz
- 命令会自动解析依赖并列出需下载的包,输入
y
确认安装。 - 出现
Complete
字样或无报错中断,即表示安装成功。
注意事项:
- 权限要求: 安装软件需写入系统目录,必须使用
sudo
或切换至root
用户。 - 独占性:
yum
或apt
进程一次只能处理一个安装任务。若在安装过程中尝试启动另一个安装,会报错。 - 错误处理: 遇到报错信息,建议自行搜索解决方案。
1-3-3 卸载软件
卸载命令同样简洁:
# CentOS
$ sudo yum remove [-y] lrzsz# Ubuntu
$ sudo apt remove [-y] lrzsz
(-y
选项自动确认操作,无需手动输入 y
)
1-3-4 注意事项
- 网络要求: 所有
yum
/apt
操作均需主机(虚拟机)网络畅通! 可使用ping
命令验证:
(注:离线安装方式不在当前讨论范围内)$ ping www.baidu.com
1-4 软件源配置
-
CentOS 源路径:
$ ls -l /etc/yum.repos.d/ total 16 -rw-r--r-- 1 root root 676 Oct 8 20:47 CentOS-Base.repo # 标准源 -rw-r--r-- 1 root root 230 Aug 27 10:31 epel.repo # 扩展源
(安装扩展源
epel-release
便于演示:$ sudo yum install -y epel-release
) -
Ubuntu 源路径:
$ cat /etc/apt/sources.list # 查看标准源配置 $ ls -l /etc/apt/sources.list.d/ # 查看扩展源配置目录
(扩展源安装视具体需求场景而定)
-
更新源: 更新软件源列表可获取最新包信息(原理现场说明)。云服务器通常已配置国内源,无需额外调整。
补充资源: 有趣的命令示例可参考:Linux命令行的有趣命令_linux有趣的命令-CSDN博客
编辑器Vim => 一款让我们受用的重要编辑器之一
Vim的背景与重要性
Vim编辑器源自Unix系统的经典文本编辑器Vi,是Vi的增强版本。在保留Vi简洁高效特性的基础上,Vim引入了语法高亮、多级撤销和寄存器系统等现代化功能,使其成为程序员必备的开发工具。
Vim的核心价值体现在三个方面:首先,其键盘驱动的操作模式让用户无需频繁切换鼠标,显著提升编辑效率;其次,高度可定制的特性允许用户根据个人习惯优化工作环境;最后,出色的跨平台兼容性使其能在Linux、macOS和Windows等主流操作系统上无缝运行。
对于程序员、系统管理员等专业人士而言,Vim不仅是提高生产力的利器,更是处理服务器环境等无图形界面场景的重要工具。掌握Vim意味着拥有一个适应各种复杂编辑需求的强大解决方案。
vim所对应的键盘按键(吃透这张图就能完全玩转vim了)
Vim的核心模式与切换
在vim中,一共有12种模式。虽然看起来很多,但实际上我们需要掌握的就只有三种模式:
命令模式(command mode):作为vim的默认模式,也是vim中最核心的模式。当我们在命令行输入vim时就会进入这个模式:
在这个模式中,用户是不可以直接输入文本的,而是执行各种导航和编辑命令(后续详谈)。所有其他模式的切换都必须通过命令模式,因此,按Esc键返回命令模式是Vim使用中最基础且最重要的操作之一。
插⼊模式(Insert mode):在命令模式中按下 i(在光标前插入)、a (在光标后插入)、o(在当前行下方插入新行)、O(在当前行上方插入新行)等键即可进入编辑模式。编辑模式下,键盘的大多数按键都会直接输入字符,类似于普通文本编辑器。按下ESC键可以返回命令模式。
底⾏模式(last line mode):
通过在命令模式下按下:键进入,用于执行更复杂的命令,如保存退出(:wq)、查找替换(:%s/old/new/g)、设置选项(:set nu)等 。末行模式还支持执行外部命令(如:r!date将当前时间插入文件)。末行模式的命令通常以冒号:开头,执行后会自动返回命令模式,因此无需手动按Esc键。
三者模式的切换方法
模式 | 进入方式 | 退出方式 | 核心功能 |
命令模式 | 启动Vim后默认进入从其他模式按Esc键返回 | - | 导航、复制、删除、查找等基本操作 |
编辑模式 | 按i/a/o/O等键 | 按Esc键 | 直接输入或编辑文本 |
末行模式 | 在命令模式下按:键 | 按Enter执行命令按Esc取消命令 | 执行复杂命令,如保存退出、查找替换等 |
vim基本操作方法
文件的打开与关闭
打开文件是使用Vim的第一步。在终端中执行以下命令可打开或创建文件:
vim 文件路径
此外,Vim支持便捷的打开选项:
vim +行号 文件路径 # 打开文件并跳转到指定行
vim +/关键词 文件路径 # 打开文件并在指定关键词处开始
保存和退出是Vim操作的关键环节。进入末行模式后,使用以下命令:
:wq 或 :x 或 ZZ # 保存并退出(前两个命令是在末行模式执行的,第三个则是在命令模式下执行的)
:q # 退出(未修改时)
:q! # 强制退出不保存
:w # 仅保存不退出
特别注意:如果在编辑过程中意外关闭终端或Vim崩溃,Vim会自动生成.swp交换文件。此时需要手动删除该文件后重新打开文件,或使用:diffsplit命令查看差异 。
光标移动
在vim中,为了方便使用者可以高效编辑,使用如下图所示的键位来代替光标的移动:
此外,vim还提供了更加高效的光标移动方式(这些操作均在命令模式中执行):
0 或 ^ # 移动到当前行的开头
$ # 移动到当前行的末尾
gg # 移动到文件的开头
G # 移动到文件的末尾
nG # 移动到第n行(如10G跳转到第10行)
w # 向前移动到下一个单词的开头
b # 向后移动到前一个单词的开头ctrl + #b屏幕往“后”移动⼀⻚
ctrl + f #屏幕往“前”移动⼀⻚
ctrl + u #屏幕往“后”移动半⻚
ctrl + d #屏幕往“前”移动半⻚
#组合使用数字和方向键可以实现更高效的移动:
5j # 向下移动5行
3w # 向前移动3个单词
Vim的光标移动设计强调效率,通过这些命令,你可以快速在文档中导航,减少不必要的鼠标操作,提高编辑速度。
文本的编辑操作
在 Vim 的命令模式下,文本编辑操作主要分为复制、删除和修改(插入)三大类。
复制操作 (Yank) 将文本保存到寄存器,供后续粘贴使用:
yy
# 复制当前整行nyy
# 复制当前行及下方n-1
行(共n
行)yiw
# 复制光标所在的单词 (inner word)y0
# 复制从光标位置到行首y$
# 复制从光标位置到行尾-
p #将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必需与“p”配合才能完成复制与粘贴功能。
删除操作 (Delete) 删除文本并将其保存到寄存器:
x
# 删除光标下的字符nx
# 删除光标所在位置的“后⾯(包含⾃⼰在内)”n个字符- X
- nX
dw
# 删除从光标到下一个单词开头的内容dd
# 删除当前整行-
ndd
# 从光标所在⾏开始删除n⾏ D
# 删除从光标位置到行尾dG
# 删除从当前行到文件末尾的所有行
插入操作 (Insert) 进入插入模式进行文本编辑:
i
# 在光标前插入文本a
# 在光标后插入文本o
# 在当前行下方插入新行并开始编辑I
# 移动到行首并开始插入A
# 移动到行尾并开始插入
撤销与重做
u
# 撤销上一次操作Ctrl + r
# 重做上一次撤销的操作
Vim 的强大之处在于其操作符 + 动作的模式。操作符(如 y
复制、d
删除)与动作命令(如 w
单词、$
行尾、G
文件尾)组合,可以高效地执行复杂编辑。例如:
5dd
:删除当前行及下方 4 行(共 5 行)。dG
:删除从当前行到文件末尾(动作G
表示移动到文件尾)。
搜索与替换
搜索功能是vim中常用的高效工具,可以快速定位文本内容:
- /(搜索内容) # 向下搜索匹配的模式
- ?(搜索内容) # 向上搜索匹配的模式
- n # 跳转到下一个匹配项
- N # 跳转到上一个匹配项
替换功能是Vim中处理大量文本的强大工具:
- :s/(所要替换的地方)/(要替换的内容)/ # 替换当前行的第一个匹配项
- :s/(所要替换的地方)/(要替换的内容)/g # 替换当前行的所有匹配项
- :%s/(所要替换的地方)/(要替换的内容)/g # 替换整个文件的所有匹配项
- :%s/(所要替换的地方)/(要替换的内容)/gc # 交互式替换,每个匹配项都会询问是否替换
- r 替换光标所在处的字符。
- R 替换光标所到之处的字符,直到按下「ESC」键为⽌。(批量式替换)
替换命令支持多种标志位,如g(全局替换)、c(交互确认)、i(不区分大小写)等 。此外,如果替换命令中的模式部分留空,Vim会重用上次的匹配模式,这在批量替换时非常有用 。
交互式替换是处理复杂替换任务的推荐方式,使用gc标志后,Vim会提示yn(替换/跳过)、a(全部替换)、q(退出替换)等选项,确保替换的准确性 。例如:
:%s/python/vim/gc
显示行号
显示行号是Vim中常用的辅助功能,可以让你更容易定位代码位置:
- :set nu # 显示行号
- :set nonu # 隐藏行号
取消搜索高亮可以避免搜索结果的干扰:
/nohl # 取消当前搜索高亮
多文件操作
多文件操作是Vim中处理多个文件的强大功能,适合大型项目开发:
vim 文件1 文件2 文件3 # 同时打开多个文件
:bn 或 :next # 切换到下一个文件
:bp 或 :prev # 切换到上一个文件
:open 文件名 # 打开新文件并切换到该文件
:files # 查看已打开的文件列表
多窗口/缓冲区管理可以让你同时查看多个文件:
:sp 文件名 # 水平分割窗口并打开新文件
:vs 文件名 # 垂直分割窗口并打开新文件
Ctrl-w w # 在窗口间切换
Ctrl-w q # 关闭当前窗口
Ctrl-w o # 仅保留当前窗口,关闭其他窗口
在多窗口环境中,可以使用以下命令在窗口间导航:
Ctrl-w j # 移动到下方窗口
Ctrl-w k # 移动到上方窗口
Ctrl-w h # 移动到左侧窗口
Ctrl-w l # 移动到右侧窗口
多文件/多窗口操作是Vim区别于普通文本编辑器的关键功能 。通过这些命令,你可以同时查看和编辑多个文件,提高编程效率。特别适合在大型项目中快速切换不同文件,查看代码上下文。
简单vim配置
在⽬录 /etc/ 下⾯,有个名为vimrc的⽂件,这是系统中公共的vim配置⽂件,对所有⽤⼾都有效。
⽽在每个⽤⼾的主⽬录下,都可以⾃⼰建⽴私有的配置⽂件,命名为:“.vimrc”。例如,/root⽬录下,通常已经存在⼀个.vimrc⽂件,如果不存在,则创建之。
对于这方面的配置,大家可以自行搜索自己喜欢的来配置。这个是我的vim配置安装包,大家可以自行去下载查看
本篇文章到这里就结束啦,下一篇博客将会带着大家来了解咱们最熟悉的编译器:gcc/g++,关注博主,获取更多优质好文吧。