Linux下的编辑器 —— vim
目录
1.什么是vim
2.vim的模式
认识常用的三种模式
三种模式之间的切换
命令模式和插入模式的转化
命令模式和底行模式的转化
插入模式和底行模式的转化
3.命令模式下的命令集
光标移动相关的命令
复制粘贴相关命令
撤销删除相关命令
查找相关命令
批量化注释和去注释
4.底行模式下的命令集
5.vim配置
vim的常见配置项
1.什么是vim
在Windows下,我们通常使用 Visual Studio 、devC++、codeblocks这样的软件,这些软件其实是集成开发环境,意思就是,这些软件同时具有编辑、编译、调试代码,这些软件将这些功能集中于一体,这就是集成开发环境。
在Linux中,将这些功能独立出来形成一个程序软件,用于编辑代码的就是vim。
所以:vim就是Linux下一款编辑器。
你可能还听说过vi,vim其实是vi的升级版,它不仅兼容vi的所有指令,而且还有一些新的特性在里面,例如语法加亮……
2.vim的模式
认识常用的三种模式
vim其实是一款多模式的编辑器,总共有12种模式,每种模式下都能进行不同的操作,我们主要学习三种模式即可,分别是:
- 命令模式:这是vim打开时默认的模式,输入的所有内容都当做命令来看待。
- 插入模式:只有在插入模式下我们才能对文件进行修改。
- 底行模式:当我们在命令模式下输入 ' : ',也就是 shift + ;时我们就会进入底行模式,底行模式下,我们输入的内容会显示在这个冒号的后面。
三种模式的详细使用后面会有!!!这里只是简单的认识一下。
三种模式之间的切换

命令模式和插入模式的转化
当我们使用 vim 文件名 命令打开一个文件的时候,vim默认就处于命令模式下:

此时我们还不能编辑该文件,因为只有在插入模式下才能编辑文件,我们可以输入 a 或 o 或 i,进入插入模式:

- 终端的最下面会出现 提示词 INSERT,表示我们处于插入模式。
此时我们就可以编辑文件了。
如果我们想回到命令模式,直接按键盘上的Esc键即可:

- 此时,终端上啥也没有,表明我们处于命令模式。
命令模式和底行模式的转化
我们先打开test_file文件,并输入一段内容,然后回到命令模式:

此时我们已经修改了文件,我们想要保存文件的内容,此时,我们就要按下 shift+;进入底行模式,输入w并按下回车,表示向文件写入,也就是保存文件内容:

此时,输入回车之后,自动就进入命令模式了,如果在底行模式下没有输入内容,我们想要进入底行模式,同样按下Esc即可。
插入模式和底行模式的转化
我们在插入模式下,如果想要进入底行模式,需要借助命令模式进行中转,先按Esc回到命令模式,然后输入shift+; 进入底行模式。
同样,我们从底行模式进入插入模式也需要借助命令模式进行中转,先按Esc进入命令模式,然后按a/i/o中的一个进入插入模式。
3.命令模式下的命令集
对于插入模式来讲,我们在插入模式下直接输入我们想要输入的内容即可,但是命令模式和底行模式还有一些常用的命令需要了解。
光标移动相关的命令
- shift+$:光标定位在当前行的最右侧结尾处。
- shift+^:光标定位在当前行的最左侧开头处。
- shift+g:光标定位到文本最后一行的开头处。
- n+shift+g:光标定位到指定一行的开头处。
- gg:光标定位到文本的最开始处。
- h:光标向左移动一格。
- j:光标向下移动一格。
- k:光标向上移动一格。
- l:光标向右移动一格。
- w:光标以单词为单位进行后移。
- b:光标以单词为单位进行前移。
复制粘贴相关命令
- yy:复制当前行
- n+yy:从光标所在位置开始,向下复制指定行。
- p:在下一行粘贴一次复制的内容。
- n+p:在下一行粘贴多次复制的内容。
撤销删除相关命令
- u:undo的意思,撤销编辑操作。
- Ctrl+r:反撤销,对撤销进行撤销。
- dd:删除/剪切 光标所在行。
- n+dd:从光标所在行开始,删除/剪切 指定行数的内容。(dd之后我们可以使用p进行粘贴)
- x:删除光标所在字符。
- n+x:从光标所在位置开始向右删除指定个数的字符。
- n+shift+x(n+X):向左侧删除指定个数的字符。
查找相关命令
- shift+3(#):标记光标所在的函数名。
- n:next的意思,下一个查找到的 函数名/字符串。
批量化注释和去注释
批量化注释步骤:
- Ctrl+v:相当于标记起始行
- hjkl选择区域
- shift+i
- //
- Esc
批量化去注释:
- Ctrl+v:标记起始行
- hjkl选择区域
- d
4.底行模式下的命令集
- w:表示保存。
- q:表示退出。
- wq:表示保存并退出。
- w!:表示强制保存。
- q!:表示强制退出。
- wq!:表示强制保存并退出。
- set nu:设置行号
- set nonu:取消行号
- vs+文件名:再次打开一个文件,vim支持同时编辑多个文件

- 光标在哪里,编辑的就是哪个文件,底行操作的就是哪个文件。
- 如果我们想切换到其他文件进行编辑 命令模式下按 Ctrl+ww 即可 。
5.vim配置
通过前面的学习,我们已经能够简单的使用vim了,但是,我们发现,vim编辑起来很不方便,没有一系列的自动补齐,语法高亮等功能…… 为了增加这些功能,我们可以对vim进行配置。
在vim启动的时候,其实并不是直接就启动,vim需要先读取当前用户家目录下的隐藏文件 —— .vimrc,这个隐藏文件就是vim的配置文件,我们在该文件中可以自定义vim的配置;
我们可以进入当前用户的家目录查看该文件,如果没有的话,就自己新建一个 .vimrc文件:

vim的常见配置项
基本编辑功能配置:
- syntax on:开启语法高亮功能,自动识别代码,并使用多种颜色显示。
- set number:显示行号,方便定位和参考代码。
- set smartindent:智能自动缩进,根据上下文自动调整缩进级别。
- set shiftwidth=4:设置自动缩进时,每一级缩进4个空格的宽度。
- set tabstop=4:设定Tab键的长度为4个空格。
- set expandtab:将Tab键转换为等量的空格,保持代码在不同编辑器中的一致性。
- set softtabstop=4:按退格键时一次删除4个空格,与tabstop配合使用。
搜索和替换配置:
- set ignorecase smartcase:搜索时忽略大小写,但如果搜索词中包含大写字母,则对大小写敏感。
- set nowrapscan:禁止在搜索到文件两端时重新搜索。
- set incsearch:输入搜索内容时就显示搜索结果,方便实时查看匹配情况。
- set hlsearch:搜索时高亮显示被找到的文本,方便快速定位。
界面和显示配置:
- set showmatch:插入括号时,短暂地跳转到匹配的对应括号,提高代码可读性。
- set matchtime=2:设置短暂跳转到匹配括号的时间,单位为十分之一秒。
- set cursorline:突出显示当前行,增加编辑时的视觉焦点。
- set ruler:打开状态栏标尺,显示当前光标位置、行号等信息。
- set laststatus=2:显示状态栏,默认值为1时可能无法显示。
- set relativenumber:显示光标所在的当前行的行号,其他行都为相对于该行的相对行号。
- set listchars=tab:»■,trail:■:如果行尾有多余的空格(包括Tab键),该配置将让这些空格显示成可见的小方块。
其他配置:
- set autoindent:自动缩进,新行的缩进级别与前一行相同。
- set hidden:允许在有未保存的修改时切换缓冲区,此时的修改由Vim负责保存。
- set cmdheight=1:设定命令行的行数为1,减少屏幕空间占用。
- set backupcopy=yes:设置备份时的行为为覆盖,确保备份文件的完整性。
我们使用vim打开这个隐藏文件并向其写入这些配置项:

当我们再次打开vim的时候,配置就生效了:

注意:我们可以在网上搜索vim的配置项,把vim配置成自己想要的样子!
相关文章:
Linux下的编辑器 —— vim
目录 1.什么是vim 2.vim的模式 认识常用的三种模式 三种模式之间的切换 命令模式和插入模式的转化 命令模式和底行模式的转化 插入模式和底行模式的转化 3.命令模式下的命令集 光标移动相关的命令 复制粘贴相关命令 撤销删除相关命令 查找相关命令 批量化注释和去…...
C25.【C++ Cont】初识运算符的重载和sort函数
目录 1.为什么要引入运算符重载 2.运算符重载写法 格式 例子 示例代码 运行结果 3.sort函数 两种声明 声明1:默认情况 参数 示例代码1:排整型 示例代码2:排浮点数 编辑 示例代码3:排字符串 声明2:自定义情况 参数 comp比较函数的两种写法 写法1:创建比较函…...
粒子群算法 笔记 数学建模
引入: 如何找到全局最大值:如果只是贪心的话,容易被局部最大解锁定 方法有:盲目搜索,启发式搜索 盲目搜索:枚举法和蒙特卡洛模拟,但是样例太多花费巨量时间 所以启发式算法就来了,通过经验和规…...
深入理解若依RuoYi-Vue数据字典设计与实现
深入理解若依数据字典设计与实现 一、Vue2版本主要文件目录 组件目录src/components:数据字典组件、字典标签组件 工具目录src/utils:字典工具类 store目录src/store:字典数据 main.js:字典数据初始化 页面使用字典例子…...
实战网络安全:渗透测试与防御指南
📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 引言 在数字化时代,网络安全已成为企业和个人不可忽视的重要课题。网络攻击的复杂性与日俱增,从数据泄露…...
SpringBoot+Electron教务管理系统 附带详细运行指导视频
文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.查询课程表代码2.保存学生信息代码3.用户登录代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootElectron框架开发的教务管理系统。首先ÿ…...
正在更新丨豆瓣电影详细数据的采集与可视化分析(scrapy+mysql+matplotlib+flask)
文章目录 豆瓣电影详细数据的采集与可视化分析(scrapy+mysql+matplotlib+flask)写在前面数据采集0.注意事项1.创建Scrapy项目`douban2025`2.用`PyCharm`打开项目3.创建爬虫脚本`douban.py`4.修改`items.py`的代码5.修改`pipelines.py`代码6.修改`settings.py`代码7.启动`doub…...
Ubuntu-手动安装 SBT
文章目录 前言Ubuntu-手动安装 SBT1. SBT是什么?1.1. SBT 的特点1.2. SBT 的基本功能1.3. SBT 的常用命令 2. 安装2.1. 下载2.2. 解压 sbt 二进制包2.3. 确认 sbt 可执行文件的位置2.4. 设置执行权限2.5. 创建符号链接2.6. 更新 PATH 环境变量2.7. 验证 sbt 安装 前言 如果您觉…...
详解最基本的数据顺序存储结构:顺序表
新的一年,我觉得这张图很合适!有梦想,敢拼,马上就是除夕了,希望新的一年我们逢考必过,事事顺心,看见朝阳的你是不是嘴角微微上扬! 本篇从0基础白话文讲述顺序表的概念、用法、注意事…...
STM32使用VScode开发
文章目录 Makefile形式创建项目新建stm项目下载stm32cubemx新建项目IED makefile保存到本地arm gcc是编译的工具链G++配置编译Cmake +vscode +MSYS2方式bilibiliMSYS2 统一环境配置mingw32-make -> makewindows环境变量Cmake CmakeListnijia 编译输出elfCMAKE_GENERATOR查询…...
前端react后端java实现提交antd form表单成功即导出压缩包
前端(React Ant Design) 1. 创建表单:使用<Form>组件来创建你的表单。 2. 处理表单提交:在onFinish回调中发起请求到后端API,并处理响应。 import React from react; import { Form, Input, Button } from ant…...
vue2中trhee.js加载模型展示天空盒子
创建相机 this.camera new THREE.PerspectiveCamera(45,this.viewNode.clientWidth / t…...
安装Office自定义项,安装期间出错
个人博客地址:安装Office自定义项,安装期间出错 | 一张假钞的真实世界 卸载PowerDesigner后,打开“WPS文字”时出现下图错误: 解决方法: 按“WinR”快捷键,打开【运行】框,在对话框中输入“re…...
代码审查中的自动化与AI应用
代码审查(Code Review)作为软件开发中的一项重要实践,通常被认为是提高代码质量、减少bug和提升团队协作的重要手段。随着开发规模的不断扩大,手动代码审查在效率、准确性、以及可扩展性上都存在明显的局限性。尤其是在敏捷开发和…...
蓝桥杯模拟算法:蛇形方阵
P5731 【深基5.习6】蛇形方阵 - 洛谷 | 计算机科学教育新生态 我们只要定义两个方向向量数组,这种问题就可以迎刃而解了 比如我们是4的话,我们从左向右开始存,1,2,3,4 到5的时候y就大于4了就是越界了&…...
PostGIS笔记:PostgreSQL 数据库与用户 基础操作
数据库基础操作包括数据模型的实现、添加数据、查询数据、视图应用、创建日志规则等。我这里是在Ubuntu系统学习的数据库管理。Windows平台与Linux平台在命令上几乎无差异,只是说在 Windows 上虽然也能运行良好,但在性能、稳定性、功能扩展等方面&#x…...
Nginx中部署多个前端项目
1,准备前端项目 tlias系统的前端资源 外卖项目的前端资源 2,nginx里面的html文件夹中新建,tlias和sky两个文件夹。 切记这是在nginx/html下创建的 mkdir sky mkdir tlias 把tlias和sky的资源都放到对应的文件夹中 3,编辑配置ngi…...
人力资源管理HR系统的需求设计和实现
该作者的原创文章目录: 生产制造执行MES系统的需求设计和实现 企业后勤管理系统的需求设计和实现 行政办公管理系统的需求设计和实现 人力资源管理HR系统的需求设计和实现 企业财务管理系统的需求设计和实现 董事会办公管理系统的需求设计和实现 公司组织架构…...
2025年美赛B题-结合Logistic阻滞增长模型和SIR传染病模型研究旅游可持续性-成品论文
模型设计思路与创新点: 建模的时候应该先确定我们需要建立什么类的模型?优化类还是统计类?这个题需要大量的数据分析,因此我们可以建立一个统计学模型。 统计学建模思路:观察规律,建立模型,参…...
【太阳——几何计算】
题目 代码 #include <bits/stdc.h> using namespace std; using PII pair<int, int>; using ll long long; const int N 1e5 10; set<PII> s; bool st[N]; struct node {int x, y, id; } arr[2 * N]; int main() {int n, X, Y;cin >> n >> …...
嵌入式MCU面试笔记2
目录 串口通信 概论 原理 配置 HAL库代码 1. 初始化函数 2. 数据发送和接收函数 3. 中断和DMA函数 4. 中断服务函数 串口通信 概论 我们知道,通信桥接了两个设备之间的交流。一个经典的例子就是使用串口通信交换上位机和单片机之间的数据。 比较常见的串…...
云原生时代,如何构建高效分布式监控系统
文章目录 一.监控现状二.Thanos原理分析SidecarQuerierStoreCompactor 三.Sidecar or ReceiverThanos Receiver工作原理 四.分布式运维架构 一.监控现状 Prometheus是CNCF基金会管理的一个开源监控项目,由于其良好的架构设计和完善的生态,迅速成为了监控…...
mysql从全备文件中提取单库或单表进行恢复——筑梦之路
前提条件 与业务确认涉及业务、数据库IP、数据误删除时间点、数据删除涉及的SCHEMA、数据表,确认该数据库为MySQLdump备份方式,备份策略为每日凌晨1点进行数据库全备份,备份保留7天,业务误删除数据时间点为当日10点左右࿰…...
渗透测试技法之口令安全
一、口令安全威胁 口令泄露途径 代码与文件存储不当:在软件开发和系统维护过程中,开发者可能会将口令以明文形式存储在代码文件、配置文件或注释中。例如,在开源代码托管平台 GitHub 上,一些开发者由于疏忽,将包含数据…...
火语言RPA--配置文件读取
🚩【组件功能】:读取配置文件信息以字典类型输出。 配置预览 配置说明 要读取的文件 支持T或# 读取配置文件的路径及名称,绝对路径。 配置文件类型 INI或XML两种选项供选择。 编码 写入配置文件的编码,以列表方式供选择&am…...
电子应用设计方案104:智能家庭AI弹簧床系统设计
智能家庭 AI 弹簧床系统设计 一、引言 智能家庭 AI 弹簧床系统旨在为用户提供更加舒适、个性化的睡眠体验,通过结合人工智能技术和先进的床垫设计,实时监测和调整睡眠环境,以满足不同用户的需求。 二、系统概述 1. 系统目标 - 自动适应用户…...
基于paddleocr的表单关键信息抽取
全流程如下: 数据集 XFUND数据集是微软提出的一个用于KIE任务的多语言数据集,共包含七个数据集,每个数据集包含149张训练集和50张验证集分别为: ZH(中文)、JA(日语)、ES(西班牙)、FR(法语)、IT(意大利)、DE(德语)、PT(葡萄牙)&a…...
爬虫基础之爬取某基金网站+数据分析
声明: 本案例仅供学习参考使用,任何不法的活动均与本作者无关 网站:天天基金网(1234567.com.cn) --首批独立基金销售机构-- 东方财富网旗下基金平台! 本案例所需要的模块: 1.requests 2.re(内置) 3.pandas 4.pyecharts 其他均需要 pip install 模块名 爬取步骤: …...
深入理解动态规划(dp)--(提前要对dfs有了解)
前言:对于动态规划:该算法思维是在dfs基础上演化发展来的,所以我不想讲的是看到一个题怎样直接用动态规划来解决,而是说先用dfs搜索,一步步优化,这个过程叫做动态规划。(该文章教你怎样一步步的…...
(1)STM32 USB设备开发-基础知识
开篇感谢: 【经验分享】STM32 USB相关知识扫盲 - STM32团队 ST意法半导体中文论坛 单片机学习记录_桃成蹊2.0的博客-CSDN博客 USB_不吃鱼的猫丿的博客-CSDN博客 1、USB鼠标_哔哩哔哩_bilibili usb_冰糖葫的博客-CSDN博客 USB_lqonlylove的博客-CSDN博客 USB …...
