Vim 编辑器介绍与使用指南

Vim 编辑器介绍与使用指南

前言

Vim 是一款诞生于 Unix 系统环境下的终端端高效文本编辑器,其前身是 1976 年推出的 Vi 编辑器。经过数十年的迭代优化,Vim 凭借轻量高效、功能强大、跨平台兼容的特性,成为 Linux/Unix 系列系统(包括国产麒麟 KylinOS)中开发者和运维人员的必备工具。它的核心优势在于模式化编辑逻辑,通过不同模式的切换,实现编辑、指令执行、文本筛选的高效协同,无需依赖鼠标操作,大幅提升文本处理效率。

一、Vim 的核心特性与安装

Vim 之所以能在众多编辑器中脱颖而出,得益于其独特且实用的功能特性。首先是模式化编辑,这是 Vim 区别于其他编辑器的核心设计,不同模式下按键对应不同功能,避免了快捷键冲突,让操作更精准;其次是语法高亮,对 C、Java、Python、Shell、HTML 等数百种编程语言和配置文件格式提供原生支持,能自动识别关键字、注释、字符串,让代码和配置的阅读更清晰;再者是多窗口与多标签页,支持同时打开多个文件,通过分屏功能实现文件间的对比编辑和内容复制,尤其适合多文件项目开发;另外,Vim 还支持宏录制与回放,可以将重复的编辑操作录制为宏,一键回放完成批量处理,极大提升重复性工作效率;最后,Vim 具备高度可定制性,用户可通过配置文件定义快捷键、界面风格、插件加载规则,打造专属的编辑环境。

在麒麟 KylinOS 等主流 Linux 发行版中,Vim 通常会预装在系统中。若未安装,可通过终端命令快速部署:

Debian/Ubuntu/KylinOS 系列系统
sudoaptupdatesudoaptinstallvim-y
验证安装是否成功
vim--version

执行 vim --version 后,终端会输出 Vim 的版本信息、编译特性等内容,证明安装完成。

二、Vim 的三大核心模式与切换

Vim 的所有操作都围绕命令模式、输入模式、末行模式三大核心模式展开,不同模式各司其职,熟练掌握模式切换是使用 Vim 的基础。

1. 命令模式(Normal Mode)

这是打开 Vim 后的默认模式,也是模式切换的“中转站”。进入该模式后,终端底部不会显示任何状态提示,此时按键不会直接输入文本,而是执行光标移动、复制、删除、撤销等指令。任何其他模式下,按下 Esc 键均可快速返回命令模式,这是 Vim 操作的核心快捷键,需要牢记。

2. 输入模式(Insert Mode)

输入模式是专门用于文本输入与编辑的模式,只有进入该模式,才能向文件中写入内容。在命令模式下,按下不同的按键可以以不同方式进入输入模式,满足不同的编辑需求:

i :在光标当前位置前插入文本,这是最常用的进入方式;
a :在光标当前位置后插入文本,适合补充光标后的内容;
o:在光标所在行的下方新建一行,并进入输入模式,方便换行编辑;
O :在光标所在行的上方新建一行,并进入输入模式,适合在当前行上方插入内容;
I :直接跳到光标所在行的行首,并进入输入模式;
A :直接跳到光标所在行的行尾,并进入输入模式。

进入输入模式后,终端左下角会显示 – INSERT – 的状态提示,此时即可像使用普通记事本一样输入文本内容。

3. 末行模式(Command-line Mode)

末行模式主要用于执行文件操作指令,比如保存、退出、查找替换、行跳转等。在命令模式下,按下 : 键即可进入末行模式,此时光标会自动跳到终端底部,等待用户输入指令。执行完指令后,Vim 会自动返回命令模式。除了 : 键,按下 / 和 ? 键也会进入末行模式的衍生模式,分别用于正向和反向查找文本。

三、Vim 常用操作指南

1. 文件的打开与退出

(1)打开文件

在终端中输入以下命令,即可用 Vim 打开指定文件,若文件不存在,则会创建一个新的空文件:

打开单个文件

vim 文件名

示例:编辑 Nginx 配置文件
vim/etc/nginx/sites-available/default
同时打开多个文件

vim 文件1 文件2 文件3

示例:同时打开两个 Shell 脚本
vimtest1.sh test2.sh

打开多个文件时,可在命令模式下输入 :n 切换到下一个文件,输入 :N 切换到上一个文件。

(2)退出文件

退出操作必须在末行模式下执行,根据是否保存修改,有多种退出指令可选:

:q :退出 Vim,仅适用于文件未被修改的情况,若文件已修改,执行该指令会提示报错;
:w :保存文件,但不退出Vim,适合编辑过程中阶段性保存;
:wq :保存并退出 Vim,这是最常用的退出方式,适用于修改后需要保存的场景;
:q! :强制退出Vim,不保存任何修改,适合编辑错误时放弃更改;
:w 新文件名 :另存为新文件,将当前内容保存到指定的新文件中,原文件不受影响。

2. 命令模式下的光标移动

在命令模式下,无需依赖方向键,通过键盘字母键即可实现精准的光标移动,这也是 Vim 提升效率的关键之一:

基础移动: h (左移一格)、 j (下移一行)、 k (上移一行)、 l (右移一格);
行首行尾跳转: 0 (跳到当前行的行首)、 $(跳到当前行的行尾);
文件首尾跳转: gg (跳到文件的第一行开头)、 G (跳到文件的最后一行开头);
指定行跳转: 数字+G (比如 10G 跳到第 10 行, 50G 跳到第 50 行);
单词跳转: w (跳到下一个单词的开头)、 b (跳到上一个单词的开头)。

3. 文本的复制、删除与撤销

命令模式下的文本操作指令简洁高效,组合使用可完成复杂的编辑任务:

(1)复制操作

yy :复制当前光标所在的整行内容;
数字+yy :复制从当前行开始的指定行数,比如 3yy 复制当前行及下方两行,共 3 行内容;
yw :复制从光标位置开始的一个单词;
p :将复制的内容粘贴到光标所在行的下方;
P :将复制的内容粘贴到光标所在行的上方。

(2)删除操作

dd :删除当前光标所在的整行内容;
数字+dd :删除从当前行开始的指定行数,比如 5dd 删除当前行及下方四行,共 5 行内容;
x :删除光标所在位置的单个字符;
dw :删除从光标位置开始的一个单词;
D :删除从光标位置到当前行尾的所有内容。

(3)撤销与重做

u :撤销上一步的编辑操作,可多次按下实现多级撤销; Ctrl + r :重做被撤销的操作,恢复之前的编辑内容。

4. 文本的查找

查找是处理大文件的高频操作,Vim 提供了强大的指令支持,所有操作均在末行模式下执行。

查找操作

正向查找:输入 :/关键词 ,按下回车后,Vim 会从光标位置开始向下查找第一个匹配的关键词,按下 n 键跳转到下一个匹配项,按下N 键跳转到上一个匹配项;
反向查找:输入 :?关键词 ,按下回车后,Vim 会从光标位置开始向上查找第一个匹配的关键词,按下 n 键跳转到上一个匹配项,按下 N 键跳转到下一个匹配项。

四、KylinOS 下 Vim 的个性化配置

默认的 Vim 配置较为基础,无法满足开发者的高阶需求。通过修改 Vim 的配置文件 ~/.vimrc ,可以实现语法高亮、行号显示、自动缩进等功能,打造更适合开发的编辑环境。

1. 创建并编辑配置文件

~/.vimrc 是 Vim 的用户级配置文件,默认不存在,需要手动创建:

进入用户主目录
cd~
创建并编辑 .vimrc 文件
vim.vimrc

2. 常用配置项添加

在 .vimrc 文件中添加以下配置内容,可大幅提升编辑体验:

" 基础显示配置

setnu" 显示行号 set cursorline "高亮当前光标所在行setruler" 显示光标位置(行号、列号) set showcmd "显示正在输入的命令" 缩进配置 set tabstop=4 "设置 Tab 键对应的空格数为4setshiftwidth=4" 设置自动缩进的空格数为 4 set autoindent "开启自动缩进,新行继承上一行的缩进格式setexpandtab" 将 Tab 键转换为空格,避免不同编辑器的缩进差异 "语法与搜索配置setsyntax on" 开启语法高亮 set hlsearch "高亮显示查找的匹配结果setincsearch" 开启增量搜索,输入关键词时实时显示匹配结果 set ignorecase "查找时忽略大小写setsmartcase" 若关键词包含大写字母,则区分大小写 "界面优化配置setscrolloff=3" 光标距离顶部或底部 3 行时,自动滚动页面 set mouse=a "启用鼠标支持,可在终端中用鼠标点击定位光标

3. 配置生效

添加完配置项后,按下 Esc 键返回命令模式,输入 :wq 保存并退出 .vimrc 文件。再次打开 Vim 时,所有配置即可自动生效。若需要临时关闭某个配置,可在末行模式下输入 :set 配置项! ,比如 :set nu! 可临时关闭行号显示。

五、Vim 的进阶技巧与插件推荐

1. 进阶使用技巧

多窗口分屏:在命令模式下输入 :sp 文件名 可水平分屏打开新文件,输入 :vsp 文件名 可垂直分屏打开新文件,按下 Ctrl + w 后再按方向键,可在不同窗口间切换;
宏录制:在命令模式下按下 q 键 + 任意字母(比如 qa )开始录制宏,执行完需要重复的操作后,再次按下 q 键结束录制,之后按下 @a 即可回放宏,按下 数字+@a 可多次回放;
可视化模式:在命令模式下按下 v 键进入字符可视化模式,按下 V 键进入行可视化模式,按下 Ctrl + v 进入块可视化模式,可选中指定区域进行复制、删除、替换等操作,适合批量编辑代码块。

2. 常用插件推荐

Vim 的功能可通过插件无限扩展,以下是几款适合开发者的实用插件:

Vundle:Vim 的插件管理器,可一键安装、卸载、更新插件,是管理 Vim 插件的基础工具;
NERDTree:文件浏览器插件,可在Vim 中以树形结构显示项目目录,方便快速切换文件;
YouCompleteMe:代码补全插件,支持 C/C++、Java、Python 等多种语言的智能提示,大幅提升编码效率;
vim-airline:状态栏美化插件,可显示当前文件格式、编码、行号等信息,让 Vim 界面更美观。

六、总结

Vim 编辑器的学习曲线虽陡峭,但一旦掌握,其高效的编辑方式会让开发和运维工作事半功倍。在麒麟 KylinOS 等 Linux 系统中,熟练使用 Vim 编辑配置文件、编写脚本,是每个技术人员的必备技能。通过反复练习基础操作,结合个性化配置和插件扩展,就能充分发挥 Vim 的强大功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1098191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UDP-2-氨基-2-脱氧-D-葡萄糖二钠盐——糖基化研究与糖药物开发的核心核苷酸

在糖生物学领域,糖核苷酸作为活化的糖基供体,是生命体中糖链合成、蛋白质修饰及细胞间通讯的分子基石。UDP-2-氨基-2-脱氧-D-葡萄糖二钠盐(UDP-D-glucosamine disodium salt),作为糖核苷酸家族的重要成员,以…

1.2 多维数组(markdown版本)

多维数组这种数据结构,运用特别频繁。二维数组用于线性代数,三维数组用于Floyd-Warshall算法。当然还有别的用途。 这里按照套路,以一个需求开始。我选择了面试经常问的,经典的LCS问题,LCS是Longest Common Subsequenc…

160_尚硅谷_string和slice

160_尚硅谷_string和slice1.string和slice的区别 2.string底层是一个byte数组,因此string也可以进行切片处理案例演示 3.string和切片在内存的形式,以‘abcd‘画出内存示意图4.string是不可变的,也就说不能通过 str…

计算机Java毕设实战-基于SpringBoot+Vue的二手数码产品交易平台的开发与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【Linux C++】采用回调链设计实现 signal 的全局处理实现 多个中断信号回调

如何在Linux C++ 程序中优雅地、统一管理 Signal 呢?答案就在下方—— 使用回调链的 SignalHandler方案代码// signal_handler.h #pragma once#include <atomic> #include <functional> #include <vec…

挠弹记录

记一个唐诗UB 看如下两份代码: har *big_multiply_fft(char *sa,char *sb){if (la<=0||lb<=0){char s[2]={0,\0};return s;} }har *big_multiply_fft(char *sa,char *sb){if (la<=0||lb<=0){char *s=mall…

UDP-酮半乳糖二钠盐——赋能前沿糖基化研究的核心工具分子

UDP-酮半乳糖二钠盐 (UDP-ketogalactose disodium salt) 是糖核苷酸家族中一个关键且具有独特反应活性的成员。作为细胞糖基化生物合成途径中的重要代谢中间体&#xff0c;它不仅是基础糖生物学研究的探针&#xff0c;更是探索新型生物合成路径与开发糖类衍生疗法的潜力分子。化…

把织物上的“轻微脏污”抓出来:客户下单50台

我们做了一套织物脏污检测方案,目标不是“实验室的算法”,而是​能在强纹理、曲面反光、褶皱阴影这些产线常态里稳定工作​。近期在外贸头部内衣胸杯客户现场验证跑通,客户已​预定数十台全检设备​,用于从抽检走向…

UDP-2-F-D-葡萄糖胺二钠盐—糖生物学研究与药物开发的关键工具分子

糖核苷酸是生命体内糖基化修饰的活化供体&#xff0c;直接参与多糖合成、蛋白质糖基化以及多种天然产物生物合成等核心生物过程&#xff0c;是连接碳水化合物代谢与复杂生命活动的重要桥梁。UDP-2-F-D-葡萄糖胺二钠盐作为一种经过特异性修饰的糖核苷酸类似物&#xff0c;为深入…

特斯拉为何死磕纯视觉?成本、数据与安全冗余的自动驾驶路线之争

在自动驾驶感知技术路线中&#xff0c;以激光雷达为核心的多传感器融合方案已成为行业主流。然而&#xff0c;特斯拉却始终坚持仅使用摄像头的纯视觉方案。这一选择背后&#xff0c;是成本控制、数据驱动与第一性原理思维的综合考量。本文将剖析特斯拉坚持纯视觉方案的核心逻辑…

论文AI率超标自救:五佳降AI工具合集

又到毕业季&#xff0c;毕业论文除了查重外&#xff0c;真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低&#xff01;实测全网产品&#xff0c;无广&#xff01;&#xff01; 如果这篇整理能帮你少走点弯路&#xff0c;那就值了。 1、嘎嘎降AI 官网&…

摸鱼没翻车,全靠这套 Chrome 快捷键组合

摸鱼没翻车,全靠这套 Chrome 快捷键 我自己基本每天都在用,熟到手指都不用过脑子。 一、老板靠近时的「三连保命组合」 这三招,是底层逻辑,先记死。 1️⃣ 一键关掉当前摸鱼页 Ctrl + W 别犹豫,看到人影直接按。 …

【毕业设计】基于SpringBoot社区住户信息管理系统(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

DaBai Max Pro 与 DaBai DCW2-DW2 深度相机坐标系解析

DaBai Max Pro 与 DaBai DCW2-DW2 深度相机坐标系解析DaBai Max Pro与DaBai DCW2-DW2&#xff08;奥比中光DaBai系列&#xff09;深度相机采用标准右手坐标系&#xff0c;原点位于相机焦点&#xff0c;单位为毫米&#xff0c;核心方向与转换规则如下&#xff1a;核心坐标系定义…

102301338郭砚康的软件工程课程总结 - Nicholas

102301338郭砚康的软件工程课程总结 一、学期回顾 1.1 回顾你对于软件工程课程的想象 在课程开始前,我心目中的软件工程主要是一门关于“如何更好地写代码”的课程,期望能学习系统的开发流程、团队协作模式以及项目管…

Java毕设项目:基于SpringBoot+Vue的二手数码产品交易平台的开发与实现(源码+文档,讲解、调试运行,定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

高达一亿港币人工智能创投基金,亚洲人工智能初创大赛上海站招募丨社区伙伴活动推荐

阅读更多 Voice Agent 学习笔记:了解最懂 AI 语音的头脑都在思考什么

论文被判AI生成?五佳降AI工具避坑分享

又到毕业季&#xff0c;毕业论文除了查重外&#xff0c;真的别忘记查ai率。 今天就告诉大家高重复率以及高ai率应该如何快速降低&#xff01;实测全网产品&#xff0c;无广&#xff01;&#xff01; 如果这篇整理能帮你少走点弯路&#xff0c;那就值了。 1、嘎嘎降AI 官网&…

Java计算机毕设之基于SpringBoot+Vue的二手数码产品交易平台的开发与实现(完整前后端代码+说明文档+LW,调试定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

通信原理篇---误码率

第一部分&#xff1a;什么是误码率&#xff1f;——“游戏的总出错率”想象你和朋友隔着一个嘈杂的教室玩传话游戏&#xff0c;你说一句话&#xff0c;他写下来。误码率 就是&#xff1a;他写错的字数&#xff0c;除以你总共说的字数&#xff0c;得到的比例。公式&#xff1a;误…