编辑器之神 Vim

article/2025/6/19 12:07:48

终于到了主包最期待的环节了
在这里插入图片描述

简单介绍

这是linux中最能装逼的一个环节
服务器哪有界面版的,都是纯粹的命令行
这个时候操作就比较复杂,需要使用一些另类的编辑器
介绍几个编辑器吧
vi nano emacs vim,这些都是命令版的编辑器,基本是后两个使用的比较多
这两个有传奇的称号
emacs神之编辑器
vim编辑器之神
这个不是初学者想学就学的,最重要的是适应
插件只是方便开打
牛逼的人写代码都是没有提示的
vim写代码是没有提示的,那确实叼
业界有个说法,牛逼的人都让工具变得越来越难用
vim虽然难,但是学会之后卧槽,其他的编辑器都是垃圾
CentOS上可能显示的是vi

Vim的简单使用

入门的简单,但是使用的时候比较麻烦
Vim有两种操作模式
普通模式(命令操作模式)操作文件
插入模式就是编辑
那记事本举例
在这里插入图片描述
这样保存等步骤操作文件的时候就是普通模式
编辑文件内容的时候就是插入模式
insert i也就是i键,当你点击i键的时候就是插入模式
在这里插入图片描述
右下角会显示这个
想要保存的时候就点Esc,然后输入英文的:然后输入wq,这个意思就是保存w然后退出q
点完Esc之后,右下角的INSERT就消失了

移动

如何来移动光标呢?
程序员在编程的时候,有时候会需要移动一下鼠标,或者够一下右下角的方向键
但是这样太麻烦了,而且会有很多的耗费时间
Vim之所以被称为编辑器之神,就是会把程序员的双手放到键盘的右半部分
为了解决这个问题,在普通模式下
hjkl这四个键来控制,但是这几个只能移动一格格子,但是这样做太蠢了

翻页

可以使用pageuppagedown来翻页,但是这样又到了离开了键盘
使用快捷键ctrl + F向下移,ctrl + B向下移
也可以使用ctrl + E是向下移动,这个向下移动还包含了加换行符,和ctrl + Y是向上移动,这样是翻一点点的感觉
如果想要移动到最后一行G,注意vim当中的命令是分小写和大写的,所以这里的大G意味着要使用shift + G
如果想要移动到最开始的时候gg,就需要使用两下小写g
这样的模式都是普通模式
输入:冒号之后就是另外一种模式了
有时候不小心修改源代码了那就输入:q!,这个意思就是不保存

不同的方式编辑文本以及跳跃单词

插入模式的话是插入到前面
在这里插入图片描述
举个例子,是插入到的前面
i是在光标位置的前面插入
a是在光标位置的后面插入,但是主包实测光标往后跳了一格,实际上也是i的模式,直接用i就行
还有一种如果我想再开一行再写怎么办呢?
o就可以直接新开一行,然后到新的这一行去输入,光标在这一行的哪里都可以,只要点o就行
在这里插入图片描述
这不就直接跳过来了,但是注意这个只有在普通模式的时候才可以开下一行,如果是插入模式的话实际上是正常输入的
x是删除当前光标所在的字符,这个同样需要在普通模式下进行,但是这个删除之后仍停留在普通模式
dd点两下,直接就是把这一行干掉了
u撤销,代替了ctrl + z
dw就是移除当前所在光标往后的单词,这样做的话需要移动到当前单词的首字母
b跨越单词的移动,向前跳跃单词,这个是跳到了单词的前面
e跨越单词的移动,向后跳跃单词,这个是跳到了单词的末尾
如果
所以当光标移动到中间的时候,按下这两个键就可以实现移动到开头或者末尾
w也是跳跃单词,这个是往后跳跃到单词的首字母,感觉w使用的会更广泛一点
假如我光标后面的东西都不想要了怎么办
shift + w就是大跳,w跳的太慢了,跳跃的是大单词
shift + bshift + e同理

跳跃行首行尾

既然可以按照单词来跳跃,那么就可以按照行来进行跳跃
shift + 6就代表的是跳跃本行的开头
shift + 4就代表的是跳跃本行的末尾
0的话是直接跳到本行的开头,这就是tab前面的内容,这个把空白字符包含了,前面两行是只能跳跃到有字的部分
r替换字符,这个可以把光标选中的字符进行替换,之后按下要替换为的字符
R就是一直替换,直到按下Esc键退出为止
在Vim中尽量不要使用退格键Backspacedelete,因为有可能会有一些命令和这些键是绑定的,不是你想的那样
{}可以进行代码中段落的跳跃,也就是代码块那样的东西

复制剪切粘贴

vim有一个缓冲区,会记录你复制剪切粘贴过的东西
p就是把你刚刚操作过的东西,在粘回来,这样的话vim里面的剪切的实现逻辑就是删除,然后再从缓冲区里面贴出来
复制就是另一回事了
yw这个意思就是复制这个单词,感觉就像是鼠标双击一样
y$表示从当前开始一直复制到行末尾,之后使用p就可以释放出来
但是有个坏处就是你不知道你复制了什么东西,如果有一行特别长的话,你不知道他到底复制到哪了
那么如何解决这个问题呢?

Visual可视化模式

为了解决这个问题,就用上了可视化模式
这下可以吹牛逼说vim有四种模式了hhhhhh
在这里插入图片描述

vv键,就会出现一个VISUAL,这个时候就可以使用hjkl进行选择了,选好之后点y,然后再按p,这样就能知道自己到底复制了什么玩意了
V这个是按行来的,直接一次就是一行,显然v更灵活一点
那就有问题了,如果我想把所有的代码删了怎么办
要先进入首行gv + G直接跳到末尾,然后按d就全删掉了,这就像一种全选然后删除的功能
这里v配合d就能删除选中的内容
选好一段内容之后,我想继续接着选怎么办o,这样就是跳到开头,再按一下o,就又跳到了末尾,可以使用oooooooooo,来回跳,卧槽有点搞笑hhhhhh
在可视化模式当中,可以使用所有上述的命令,随便你怎么跳
可以选中之后再按y就是复制选中内容
ctrl + c是选中每一行
ctrl + v是一种矩阵选择
在选中过程中0就是补全角落,把你没复制到的角落给你复制上

视图模式中的其他模式

如果我要把这一行缩进怎么办,或者是全选然后缩进
那就是使用v把这些全部选中,然后加上<>就是缩进,这两个分别是向前缩进和向后缩进
v选中之后~就是大小写翻转
v + U,把选中的内容全部变成大写的
v + u,把选中的内容全部变成小写的

查找和替换

也就是ctrl + f
光标移到哪?就是从哪里开始查
输入一个\然后输入所要查询的单词,然后就跳到了要查询的单词
这样我想继续往下查该怎么办,那就是n就是一直查下一个
找到之后我想替换怎么办呢?
输入:s/const/let/g这样的意思就是:s是开始替换/const是要替换的内同/let是要替换成的内容/g是把这一行中的const全部替换
如果是替换整个文件的const该怎么做?:%s,换成了百分比,这样就给你文本里面的直接替换了
如果选择行号去替换该怎么办
:set number就可以临时显示行号
在这里插入图片描述
就会出现这样的效果
如果我只想把某两行之间的const进行替换,其他的不变
:2,15s/const/let/g后面的一样,这个意思就是把第2到15行的所有const都替换掉了
还有一种是有提示的替换:s/const/let/gc,这个就是一直往下查找,然后问问你确定要替换吗?然后你需要点y或者n,然后他会跳到下一个继续问你,或者替换完了就退出

Vim中的基础配置

Vim也是可以去配置的,包括主题,颜色乱七八糟的
要想配置vim的话必须去自己配置一个vim的配置文件
/home/yangyeyuan下面使用touch .vimrc

set syntax=on
set tabstop=3
set softtabstop=4
set number
set enc=utf-8
set showmatch

常用的配置可以上github上去搜索,重要的是会编写代码,而不是会配置文件,了解一下就可以
vim中也有一些插件,整花里胡哨的插件有啥用,得会写才行
话说主包得把主包的idea更新一下了
配置好这个文件之后需要使用source .vimrc来更新一下
跳跃到哪一行?55gg就直接调到了第55行

快捷键

v + aw就是快速选中光标所在的单词
v + ab把复制单词所在的小括号全部内容
v + aB就是复制单词所在的大括号全部内容
v + a<就是选中尖括号<>


主包需要补充一些有用的快捷键了
这么多,主包这能知道啊,只能说是慢慢补充了
Vim也是根据个人习惯而言
好的代码和插件可以提高你的效率,但是并不能提高你的水准
不要让工具毁了你,不能变成过于依赖插件的人
只有用记事本编辑,才能变成最后的大佬hhhhhhhhh




micro_frank


http://www.hkcw.cn/article/qEEtbTsnYx.shtml

相关文章

任务19:实现山东省气温预测

任务描述 知识点&#xff1a; 时间序列分析 重 点&#xff1a; 指数平滑法ARIMA模型Python连接数据库&#xff0c;查询数据 内 容&#xff1a; 读取并创建时序数据使用指数平滑法建立模型&#xff0c;并预测下一年山东省各月的平均气温使用ARIMA建立模型&#xff0c;并…

C++ - STL #什么是STL #STL的版本 #闭源开源 #STL的六大组件

文章目录 前言 一、什么是STL 二、STL的版本 1、原始版本 2、P.J.版本 3、RW版本 4、SGI版本 三、闭源、开源 四、STL的六大组件 总结 前言 路漫漫其修远兮&#xff0c;吾将上下而求索&#xff1b; 一、什么是STL STL(standard template libaray 标准模板库)&#…

学习STC51单片机22(芯片为STC89C52RCRC)

记住这个AT指令千万不要去脑子记&#xff0c;要用手册查 每日一言 努力不是为了感动谁&#xff0c;而是为了不辜负自己的野心。 硬件&#xff1a;ESP8266 wife模块 蓝牙&#xff0c;ESP-01s&#xff0c;Zigbee&#xff0c;NB-lot等通信模块都是基于AT指令的设计 老样子 我们用…

华为OD机试真题——统计匹配的二元组个数(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《统计匹配的二元组个数》:…

LLMTIME: 不用微调!如何用大模型玩转时间序列预测?

今天是端午节&#xff0c;端午安康&#xff01;值此传统佳节之际&#xff0c;我想和大家分享一篇关于基于大语言模型的时序预测算法——LLMTIME。随着人工智能技术的飞速发展&#xff0c;利用大型预训练语言模型&#xff08;LLM&#xff09;进行时间序列预测成为一个新兴且极具…

Unity3D仿星露谷物语开发56之保存角色位置到文件

1、目标 游戏中通过Save Game保存角色位置&#xff0c;当重启游戏后&#xff0c;通过Load Game可以恢复角色的位置。 2、Player对象操作 &#xff08;1&#xff09;组件添加 给Hierarchy下的Player组件添加Generate GUID组件。 &#xff08;2&#xff09;修改SceneSave.cs脚…

AI书签管理工具开发全记录(八):Ai创建书签功能实现

文章目录 AI书签管理工具开发全记录&#xff08;八&#xff09;&#xff1a;AI智能创建书签功能深度解析前言 &#x1f4dd;1. AI功能设计思路 &#x1f9e0;1.1 传统书签创建的痛点1.2 AI解决方案设计 2. 后端API实现 ⚙️2.1 新增url相关工具方法2.1 创建后端api2.2 创建crea…

【计算机网络】第3章:传输层—概述、多路复用与解复用、UDP

目录 一、概述和传输层服务 二、多路复用与解复用 三、无连接传输&#xff1a;UDP 四、总结 &#xff08;一&#xff09;多路复用与解复用 &#xff08;二&#xff09;UDP 一、概述和传输层服务 二、多路复用与解复用 三、无连接传输&#xff1a;UDP 四、总结 &#xff08…

leetcode hot100刷题日记——30.两数之和

解答&#xff1a; 方法一&#xff1a;迭代 迭代大致过程就是&#xff1a; 算两条链表的当前位的和&#xff0c;加上上一位留下来的进位&#xff0c;就是新链表的当前位的数字。计算当前的进位。 这样&#xff0c;我们迭代需要的东西是&#xff1a;链表1&#xff0c;链表2&…

飞腾D2000与FPGA结合的主板

UD VPX-404是基于高速模拟/数字采集回放、FPGA信号实时处理、CPU主控、高速SSD实时存储架构开发的一款高度集成的信号处理组合模块&#xff0c;采用6U VPX架构&#xff0c;模块装上外壳即为独立整机&#xff0c;方便用户二次开发。 UD VPX-404模块的国产率可达到100%&#xff0…

Baklib知识中台驱动服务升级

知识中台架构升级路径 在数字化转型背景下&#xff0c;Baklib通过重构知识中台的技术底座与服务体系&#xff0c;形成了分层解耦的模块化架构。该架构以四库体系为核心支撑&#xff0c;通过分布式存储引擎与语义分析算法的深度耦合&#xff0c;实现了多源异构数据的标准化接入…

NHANES指标推荐:ALI

文章题目&#xff1a;A cross-sectional study examining the relationship between the advanced lung cancer inflammation index and prostate cancer 中文标题&#xff1a;一项检查晚期肺癌炎症指数与前列腺癌之间关系的横断面研究 发表杂志&#xff1a;Journal of Health…

Python训练打卡Day38

Dataset和Dataloader类 知识点回顾&#xff1a; Dataset类的__getitem__和__len__方法&#xff08;本质是python的特殊方法&#xff09;Dataloader类minist手写数据集的了解 在遇到大规模数据集时&#xff0c;显存常常无法一次性存储所有数据&#xff0c;所以需要使用分批训练的…

leetcode付费题 353. 贪吃蛇游戏解题思路

贪吃蛇游戏试玩:https://patorjk.com/games/snake/ 问题描述 设计一个贪吃蛇游戏,要求实现以下功能: 初始化游戏:给定网格宽度、高度和食物位置序列移动操作:根据指令(上、下、左、右)移动蛇头规则: 蛇头碰到边界或自身身体时游戏结束(返回-1)吃到食物时蛇身长度增加…

NLP学习路线图(十三):正则表达式

在自然语言处理&#xff08;NLP&#xff09;的浩瀚宇宙中&#xff0c;原始文本数据如同未经雕琢的璞玉。而文本预处理&#xff0c;尤其是其中至关重要的正则表达式技术&#xff0c;正是将这块璞玉转化为精美玉器的核心工具集。本文将深入探讨正则表达式在NLP文本预处理中的原理…

【算法】动态规划

一、动态规划的基本思想 动态规划算法与分治法类似&#xff0c;其基本思想也是将待求解的较大规模问题分解为若干个较小的子问题&#xff0c;先求解子问题&#xff0c;再从这些子问题的解得到原问题的解。 但动态规划法有自己的特点。分治法的子问题相互独立&#xff0c;适合动…

设计模式——原型设计模式(创建型)

摘要 本文详细介绍了原型设计模式&#xff0c;这是一种创建型设计模式&#xff0c;通过复制现有对象&#xff08;原型&#xff09;来创建新对象&#xff0c;避免使用new关键字&#xff0c;可提高性能并简化对象创建逻辑。文章阐述了其优点&#xff0c;如提高性能、动态扩展和简…

java程序从服务器端到Lambda函数的迁移与优化

source&#xff1a;https://www.jfokus.se/jfokus24-preso/From-Serverful-to-Serverless-Java.pdf 从传统的服务器端Java应用&#xff0c;到如今的无服务器架构。这不仅仅是技术名词的改变&#xff0c;更是开发模式和运维理念的一次深刻变革。先快速回顾一下我们熟悉的“服务…

57、IdentityServer4概述

IdentityServer4是一个基于ASP.NET Core的开源身份认证和授权框架&#xff0c;实现了OpenID Connect和OAuth 2.0协议。它为现代应用程序提供集中式的身份验证和授权服务&#xff0c;支持单点登录&#xff08;SSO&#xff09;、令牌颁发与验证、会话管理等功能&#xff0c;广泛应…

2025.5.29 学习日记 docker概念以及基本指令

Docker&#xff1a; Docker 是一种开源的容器化平台&#xff0c;用于快速部署应用程序&#xff0c;实现开发、测试和生产环境的一致性。 一、Docker 核心概念 镜像&#xff08;Image&#xff09; 只读的模板文件&#xff0c;用于创建容器&#xff0c;类似虚拟机的镜像&#x…