Linux_编辑器Vim基本使用
✨✨ 欢迎大家来到小伞的大讲堂✨✨
🎈🎈养成好习惯,先赞后看哦~🎈🎈
所属专栏:LInux_st
小伞的主页:xiaosan_blog制作不易!点个赞吧!!谢谢喵!!!
1.编辑器Vim
IDE例子
1.1 Linux编辑器-vim使用
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于xwindow、macos、windows。
对于Vim我们依然可以使用箭头控制光标方向,在最初的键盘中并没有箭头控制,而是使用H(左)J(下)K(上)L(右),如今依然可以使用
1.2 vim的基本概念
vim存在多种模式,最常使用的有三种模式分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)
正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到last line mode
插入模式(Insert mode)
只有在lnsert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。
在命令模式下,*shift+:即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes
2 vim的基本操作
进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
$ vim test.c
不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。
[正常模式]切换至[插入模式]
- 输入a
- 输入i(insert,我比较喜欢使用这个):按“i”进入插入模式后是从光标当前位置开始输入文件;
- 输入o
[插入模式]切换至[正常模式]
目前处于[插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。
[正常模式]切换至[末行模式]也就是命令行模式
「shift+;」,其实就是输入「:」
退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Lastlinemode」,例如:
:w(保存当前文件)
:wq(输入「wq」,存盘并退出vim)
:q!(输入q!不存盘强制退出vim)
2.1 vim正常模式命令集
插入模式
按「i」切换进入插入模式「insertmode」,按“i”进入插入模式后是从光标当前位置开始输入
文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
从插入模式切换为命令模式
按「ESC」键。
移动光标
vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、
「l」,分别控制光标左、下、上、右移一格
按「G」:移动到文章的最后
按「$」:移动到光标所在行的“行尾”
按「个」:移动到光标所在行的“行首”
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头按「#l」:光标移到该行的第#个位置,如:5l,56l
按[gg]:进入到文本开始
按[shift+g]:进入文本末端
按「ctrl」+「b」:屏幕往“后”移动一页
按「ctrl」+「f」:屏幕往“前”移动一页
按「ctrl」+「u」:屏幕往“后”移动半页
按「ctrl」+「d」:屏幕往“前”移动半页
删除文字
「x」:每按一次,删除光标所在位置的一个字符
「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自已在内)”6个字符
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符「dd」:删除光标所在行
「#dd」:从光标所在行开始删除#行
复制
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yW」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“V”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
替换
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
撤销上一次操作
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行
多次回复。
「ctrl+r」:撤销的恢复
更改
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字
跳至指定的行
「ctrl」+「g」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
2.2 vim末行模式命令集
在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。
列出行号
「setnu」:输入「setnu」后,会在文件中的每一行前面列出行号。
跳到文件中的某一行
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。
查找字符
「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。
保存文件
「w」:在冒号输入字母「w」就可以将文件保存起来
离开vim
「q」:按「q」就是退出,如果无法离开vim,可以在「q」后跟→个「!」强制离开vim。
「wq」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
参考资料
Vim 从入门到精通
相关文章:

Linux_编辑器Vim基本使用
✨✨ 欢迎大家来到小伞的大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:LInux_st 小伞的主页:xiaosan_blog 制作不易!点个赞吧!!谢谢喵!&a…...

vue展示修改前后对比,并显示修改标注diff
动态父组件 <template><el-buttontype"primary"size"small"plainclick"showDiffDialog(subItem)">查看修改内容</el-button><TextDiffDialogv-model:visible"diffDialogVisible":before"currentDiffItem?.…...

LiveWallpaperMacOS:让你的 Mac 桌面动起来
随着桌面美化需求的不断提升,用户对于桌面壁纸的要求已经不再局限于静态图片。越来越多的 Mac 用户希望桌面能像 Windows 一样,拥有动态壁纸,展现个性、提升体验。LiveWallpaperMacOS 正是这样一款让你的 Mac 桌面焕发活力的开源项目。 本文将详细介绍 LiveWallpaperMacOS …...
[预训练]Encoder-only架构的预训练任务核心机制
原创文章1FFN前馈网络与激活函数技术解析:Transformer模型中的关键模块2Transformer掩码技术全解析:分类、原理与应用场景3【大模型技术】Attention注意力机制详解一4Transformer核心技术解析LCPO方法:精准控制推理长度的新突破5Transformer模…...

07-后端Web实战(部门管理)
5. 修改部门 对于任何业务的修改功能来说,一般都会分为两步进行:查询回显、修改数据。 5.1 查询回显 5.1.1 需求 当我们点击 "编辑" 的时候,需要根据ID查询部门数据,然后用于页面回显展示。 5.1.2 接口描述 参照参照…...

mysql ACID 原理
序言:ACID 是一组数据库设计原则,他是业务数据和关键业务程序的可靠性保障。 1、atomicity(原子性) 依赖如下能力 autocommit commit rollback2、一致性 2.1 double write buffer 1、定义:double write buffer 是…...

[Rust_1] 环境配置 | vs golang | 程序运行 | 包管理
目录 Rust 环境安装 GoLang和Rust 关于Go 关于Rust Rust vs. Go,优缺点 GoLang的优点 GoLang的缺点 Rust的优点 Rust的缺点 数据告诉我们什么? Rust和Go的主要区别 (1) 性能 (2) 并发性 (3) 内存安全性 (4) 开发速度 (5) 开发者体验 Ru…...

二十五、面向对象底层逻辑-SpringMVC九大组件之HandlerMapping接口设计
一、引言:MVC架构的交通枢纽 在Spring MVC框架中,HandlerMapping接口扮演着"请求导航仪"的关键角色,它决定了HTTP请求如何被路由到对应的Controller处理器。作为MVC模式的核心组件之一,HandlerMapping在请求处理的生命…...
构建安全高效的邮件网关ngx_mail_ssl_module
一、快速上手:最小配置示例 worker_processes auto;mail {server {# 监听 IMAP over TLSlisten 993 ssl;protocol imap;# TLS 协议与密码套件ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;# 证书与私钥ssl_…...

HUAWEI交换机配置镜像口验证(eNSP)
技术术语: 流量观察口:就是我们常说的镜像口,被观察的流量的引流目的端口 流量源端口:企业生产端口,作为观察口观察对象。 命令介绍: [核心交换机]observe-port [观察端口ID或编号(数字&am…...

前端vue3实现图片懒加载
场景和指令用法 场景:电商网站的首页通常会很长,用户不一定能访问到页面靠下面的图片,这类图片通过懒加载优化手段可以做到只有进入视口区域才发送图片请求 核心原理:图片进入视口才发送资源请求 首先:我们需要定义一个全局的指令&#x…...
网站每天几点更新,更新频率是否影响网站收录
1. 每天几点更新网站最合适?总怕时间选错影响收录? 刚开始搞网站的时候,是不是老纠结啥时候更新合适?早上刚上班?半夜没人的时候?选不对时间,总担心搜索引擎爬虫来了没抓到新内容,影…...
主流Markdown编辑器的综合评测与推荐
根据2025年最新资料,结合功能特性、用户体验和技术适配性,以下是对主流Markdown编辑器的综合评测与推荐: 一、核心对比维度与评估方法 功能完整性:支持数学公式、流程图、代码高亮等复杂格式。跨平台兼容性:Windows/m…...

计算机网络-MPLS VPN应用场景与组网
上一篇文章我们通过一个基础实验实现了企业分支间的MPLS VPN互联,如果还不理解的可以多看几遍前面的文章或者多敲下实验。今天来学习几种常见的MPLS VPN应用场景与这些场景下MPLS VPN的部署方法。 一、MPLS VPN典型应用 目前,MPLS VPN的主要应用包括企…...
AugmentFree:解除 AugmentCode 限制的终极方案 如何快速清理vscode和AugmentCode缓存—windows端
AugmentFree1.0工具包:解除 AugmentCode 免费试用限制的终极方案 Augment VIP 是一个专为 VS Code 用户设计的实用工具包,旨在帮助用户管理和清理 VS Code 数据库,解除 AugmentCode 免费试用账户的限制。 augment从根源上解决免费额度限制问…...
WPF【11_7】WPF实战-重构与美化(ViewModel的嵌套与分解、海量数据不要Join)
11-12 【重构】ViewModel的嵌套与分解 目前我们的代码中有一个不易发现的致命问题,如果工作中这样写代码大概率会被打回去重做。那么这个问题是什么呢? --\ViewModels\MainViewModel.cs 视图模型中的 LoadCustomers() 方法,考虑一下在这里我…...

Linux 的编辑器--vim
1.Linux编辑器-vim使⽤ vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,⽽且还有⼀些新的特性在⾥⾯。例如语法加亮,可视化操作不仅可以在终端运⾏,也可以…...
Oracle 慢sql排查
Oracle慢sql排查步骤 1.1. 前言 Oracle 慢查询的排查方向包括以下几个方向 : 基准测试 (吞吐量): 包括 Oracle 本身吞吐量和磁盘 I/O 吞吐量硬件分析 (资源情况): 包括查看服务器 CPU , 硬盘的使用情况SQL分析:分析 SQL 中是否存在慢查询 , 是否命中索引配置优化…...

[Protobuf] 快速上手:安全高效的序列化指南
标题:[Protobuf] (1)快速上手 水墨不写bug 文章目录 一、什么是protobuf?二、protobuf的特点三、使用protobuf的过程?1、定义消息格式(.proto文件)(1)指定语法版本(2)package 声明符 2、使用protoc编译器生成代码&…...
uniapp开发企业微信小程序时 wx.qy.login 在uniapp中使用的时候,需要导包吗?
在 UniApp 中使用 “wx.qy.login” 不需要手动导包,但需要满足以下条件: 一、环境要求与配置 1� 企业微信环境判断 必须确保当前运行环境是企业微信客户端,通过 “uni.getSystemInfoSync().environment” 判断是否为 “wxwork”…...

如何将通话记录从Android传输到Android
“如何将通话记录从 Android 转移到 Android?我换了一部新的 Android 手机,想要将通话记录复制到其中。”您需要将通话记录从 Android 传输到 Android 是一种常见的情况,因为通话记录是手机上最重要的数据之一。幸运的是,如果您从…...
Word 目录自动换行后错位与页码对齐问题解决教程
📘 Word 目录自动换行错位与页码对齐问题解决教程 🎯 目标效果 目录条目过长自动换行后,第二行左对齐整齐;页码始终靠右对齐,前方带有“……”引导符;解决页码错位、制表符消失或格式混乱问题。 …...

数据结构第4章 栈、队列和数组 (竟成)
目录 第 4 章 栈、队列和数组 4.1 栈 4.1.1 栈的基本概念 4.1.2 栈的基本操作 4.1.3 栈的实现 1.顺序栈 2.链式栈 3.共享栈 4.1.4 顺序栈的基本操作实现 1.初始化栈 2.判空 3.判满 4.元素进栈 5.元素出栈 6.获取栈顶元素 4.1.5 链栈的基本操作实现 1.元素进栈 2.元素出栈 4.1.6…...
removeIf() 方法,结合 Lambda 表达式
在 Java 8 中,removeIf() 方法是 Collection 接口新增的一个默认方法,用于根据条件批量删除集合中的元素。结合 Lambda 表达式,可以以极简的语法实现复杂的过滤逻辑。以下是详细说明: 1. 方法定义与语法 // java.util.Collection 接口中的定义 default boolean removeIf(P…...
汽车售后诊断数据流详细分析
一、引言 随着汽车电子化程度的不断提升,电控系统已成为车辆运行的核心支撑。据罗兰贝格 2025 年智能汽车白皮书数据显示,中央计算 区域控制架构(Zonal EEA)的普及率已突破 58%,推动整车线束成本下降 41%12。与此同时…...

2025年渗透测试面试题总结-匿名[校招]安全研究员(SAST方向)(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]安全研究员(SAST方向) 一面问题回答框架 1. 自我介绍 2. 简历深挖(漏洞挖掘&#x…...

Unity 游戏优化(持续更新中...)
垃圾回收 是什么? 垃圾回收(Garbage Collection)GC 工作机制 1、Unity 为用户生成的代码和脚本采用了自动内存管理。 2、小块数据(如值类型的局部变量)分配在栈上。大块数据和长期存储分配在托管堆上。 3、垃圾收集…...
LlamaFactory——如何使用魔改后的模型
需求来源:有时我们可能想在llamafactory框架支持的模型上进行一些改动,例如修改forward()方法等,修改方法我们可以通过继承Transformers库中相应的class并重写相应的方法即可,那我们如何使用自己的模型呢? 首先&#…...
【前端】【css预处理器】Sass与Less全面对比与构建对应知识体系
第一章 概述 1.1 Sass和Less简介 1.1.1 Sass简介 Sass(Syntactically Awesome Stylesheets)是一种 CSS 预处理器,它为 CSS 赋予了更多强大的功能和更灵活的语法结构😎。 语法特点:Sass 有两种语法格式。一种是 .sa…...
【请关注】关于VC++实现使用Redis不同方法,有效达到 Redis 性能优化、防击穿
麻烦先关注方便了解最新分享。 关于VC实现使用Redis不同方法,有效达到 Redis 性能优化、防击穿。 一、性能优化核心方法 1. 使用连接池复用连接 // 连接池结构体 struct RedisPool { hiredisContext** connections; int size; sem_t sem; // 信号量控制并发 }; //…...