【Linux】 vi / vim 使用
天天用vim 或者vi 。看着大佬用的很6 。我们却用的很少。今天咱们一起系统学习一下。

vi / vim 发展史
vi
是一款由加州大学伯克利分校,Bill Joy研究开发的文本编辑器。
vim
Vim是一个类似于Vi的高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。Vim是自由软件。Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈居第二。但在2000年2月Vim赢得了Slashdot Beanie的最佳开放源代码文本编辑器大奖,又将Emacs推至二线。
Vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。
Vim(Vi improved)是vi编辑器的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。
vim 和 vi 都是一个文本编辑器不只linux的命令。
Linux通常都已经默认安装好了 vi 或 Vim 文本编辑器,我们只需要通过vim命令就可以直接打开vim编辑器了,如下图所示:
输入:vim

退出输入 :q
是不是很一样。哈哈。
vim使用
注意1
不要使用 vim 打开大文件, vim 会一次性读取所有内容到内存,容易造成宿主机内存溢出,打开文件前查看文件大小。一般不要超过100MB 。
使用vim打开文件
基本语法: vim 文件名称
示例:vim test4.text

vi是三中模式
(不学习这个了,了解就行)
- Command(命令)模式,用于输入命令
- Insert(插入)模式,用于插入文本
- Visual(可视)模式,用于视化的的高亮并选定正文
VIM四种模式
- Normal 正常模式
- Insert 插入(编辑)模式
- Command 命令模式
- Visual 可视化模式
Normal 正常模式
启动vim后默认处于正常模式。不论位于什么模式,按下键(有时需要按两下)都会进入正常模式。正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作。

Insert 插入(编辑)模式
在正常模式中按下i, I, a, A等键,会进入插入模式。现在只用记住按i键会进行插入模式。在插入模式中, 输入内容会插入到文本中。

Command 命令模式
在正常模式中,按下:(英文冒号)键,会进入命令模式。 在命令模式中可以设置vim一些格式,也可以进行内容查找等操作。

Visual 可视化模式
在正常模式中按下v, V, +v,可以进入可视模式。 可视模式主要用于选择文本内容时,可以有很直观的看到选中内容。
可视模式有三种:
1、字符模式: v (小写)

2、行模式: V (大写)

3、块模式: Ctrl+v

移动命令
通常使用键盘区右下角的 ↑ ↓ ← → 。
Vim 提供了另一种方式来移动光标——使用 h、j、k、l 键来移动光标。
- h 光标向 左 移动一个字符
- j 光标向 下 移动一行(实际行:以换行符结束的为一行)
- gj 光标向 下 移动一行(屏幕行:屏幕上的一行)
- k 光标向 上 移动一行(实际行:以换行符结束的为一行)
- gk 光标向 下 移动一行(屏幕行:屏幕上的一行)
- l 光标向 右 移动一个字符
- 0 到行首
- ^ 到行首第一个字符,如果前面有空格的话
- $ 到行尾
- gg 快速到文件头
- G 快速到文件尾
- 100G 跳转到第100行
- w / W 移动到下一个单词/字符串的开头( 大写是以空格为分界符)
- e /E 移动到下一个单词/字符串的结尾
- b/ B 移动到(上一个/当前)单词/字符串的开头
- ge / gE 移动到(上一个/当前)单词/字符串的结尾
- Ctrl-f 向上翻页
- Ctrl-b 向下翻页
- Ctrl-d 向下翻半页
- Ctrl-u 向上翻半页
- zz 光标所在行移动到屏幕的中间。
- zt 光标所在行移动到屏幕的顶端。
- zl 光标所在行移动到屏幕的底端。
操作命令
- y 复制 (yank)
- yy 复制一行
- 10yy 向下复制10行
- yw 复制光标开始的一个单词
- y$ 复制光标到行尾
- yfB 复制光标到第一个大写B中间的内容
- y2fB 复制光标到第二个大写B中间的内容
- x 向剪切一个一个字符,如果是在行尾,则为向前剪切
- 3x 剪切三个
- xp 非行尾交换两个字符,如从 bs 变成 sb
- p 粘贴(y复制完了 用p来粘贴)
- 3p 将复制或剪切的内容粘贴三次
- c 变更 (change) cc :删除一行并进入插入模式
-
cw 替换文本直到单词末尾(ce也可) 语法为ncw n表示需要删除的单词个数,表示删除n个单词后进入insert模式
-
c$ 替换文本直到行尾 同cw 只是是从光标开始删除至行尾 并进入insert 模式
- d 删除 (delete)
- dd: 删除一行
- 20dd 删除20行
- dw 删除一个单词
- df” 删除到出现的第一个双引号
- S 删除整行,与dd区别在于,S删除后会进入Insert模式
- x 删除光标下的字符
- X 删除光标左边的字符
- ~ 转换大小写 '~' 不是一个操作符,但是可以在配置文件里 "set tildeop" 将其变成一个操作符
- g~ 转换大小写(大写边小写,小写变大写)
- gu 将选中内容转换为小写
- gU 将选中内容转换为大写
- > shift right (向右移动一个制表符) >>:向右缩进当前行
- < shift left(向左移动一个制表符) <<:向左缩进当前行
- u(小写) 撤销
- U撤销对整行的操作
- Ctrl + r 重做(Redo),即撤销的撤销。
保存退出
- :wq保存并退出
- ZZ保存并退出
- :q!丢弃修改并退出 (q退出,有修改的话q不能退出)
- :qa!打开多个文件时使用此命令
查找并替换
- :/yang 直接查找文本yang 内容
- :/yang 表示查找yang 单词 然后 : n 查找下一个, :N查找前一个
- : s/old/new/g 查找old并替换为new,g代表整行匹配 替换 在进入命令行模式前 光标 所在行
- :#, #s/old/new #, #代表首尾行号 比如 1,3 就是1-3行 可以通过 :set nu 来显示行号
- :%s/old/new/g 全文匹配替换
- :%s/old/new/gc 全文匹配替换,并每次替换会弹出确认提示 c所有替换命令 加c 后会弹出确认提示
选项设置
- :set ic 忽略大小写
- :set is 部分匹配(like)
- :set hls 高亮匹配
- :set nu 显示行号

文件操作
- :e + filename打开新文件
- :r + filename读取文件并插入到当前文件
- :bn 切换到下一个文件 当使用 vim file1 file2 打开多个文件时
- :bp 切换到上一个文件
分屏启动
- vim -on file1 file2… 水平分屏
- vim -On file1 file2… 垂直分屏
- Ctrl + w = 所有屏一样高度
- Ctrl + w + 增加高度
- Ctrl + w - 减少高度
- Ctrl + w c 关闭当前窗口(如果是最后一个,无法关闭) 先按ctrl +w 再按c
- Ctrl + w q 关闭当前窗口(如果是最后一个,则退出vim) 先按ctrl +w 再按q 或者直接进入命令行模式 输入q 一个一个的关闭
水平分屏 vim -on test4.text test8.text

垂直分屏 vim -On test4.text test8.text

Vim 有一个超级大招 那就是宏录制。今天不想写了,有空在写吧,哈哈哈哈哈。
相关文章:
【Linux】 vi / vim 使用
天天用vim 或者vi 。看着大佬用的很6 。我们却用的很少。今天咱们一起系统学习一下。 vi / vim 发展史 vi 是一款由加州大学伯克利分校,Bill Joy研究开发的文本编辑器。 vim Vim是一个类似于Vi的高度可定制的文本编辑器,在Vi的基础上改进和增加了很多…...
Leetcode hot 100之双指针(快慢指针、滑动窗口)
目录 数组 有序的平方仍有序 删除/覆盖元素 移动零:交换slow和fast 滑动窗口:最短的连续子串(r可行解->l--最短解) 最小长度的子数组 求和:sort、l i 1, r len - 1 三数之和abctarget 四数之和abcdtarg…...
Bridge Champ助力我国桥牌阔步亚运, Web3游戏为传统项目注入创新活力
本届杭州亚运会,中国桥牌队表现杰出,共斩获1金1银1铜佳绩,其中女子团体夺得冠军,混合团体获得亚军。这充分展现了我国桥牌的实力,也彰显了桥牌作为亚运会体育竞技项目的影响力。与此同时,Web3游戏Bridge Champ为传统桥牌项目带来创新模式,将有望推动桥牌运动在亚运舞台上焕发新…...
云原生微服务 第六章 Spring Cloud中使用OpenFeign
系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 文章目录 系列文章目录前言1、OpenFeign的实现…...
uniapp-vue3 抖音小程序开发(上线项目开源)
最近公司临时接一个项目来接手别人的流量,项目比较小,时间比较赶。 需求:一个答题小程序,通过答题来实现性格测算和分析。 之前开发过支付宝小程序和微信小程序,这次是首次开发抖音小程序,老板要求只能下…...
基于微信小程序的个人健康数据管理平台设计与实现(源码+lw+部署文档+讲解等)
文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...
真香!Jenkins 主从模式解决问题So Easy~
01.Jenkins 能干什么 Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。 中文官网:https://jenkins.io/zh/ 0…...
Win10系统打开组策略编辑器的两种方法
组策略编辑器是Win10电脑中很实用的工具,它可以帮助用户管理和设置计算机的安全性、网络连接、软件安装等各种策略。但是,很多新手用户不知道打开Win10电脑中组策略编辑器的方法步骤,下面小编给大家介绍两种简单的方法,帮助打开快…...
git 的行结束符
CR (Carriage Return) 表示<回车>LF (Line Feed) 表示<换行> 1. 不同系统的行结束符 系统名称行结束符意义释义git line endings选项DOS / Windows\r\nCRLF‘\r’是使光标移动到行首 ’\n’是使光标下移一行Windows-styleMacOS\rCRreturnAs-isUNIX / Linux\nLFne…...
buuctf PWN warmup_csaw_2016
下载附件,IDA查看 发现直接有显示flag函数 int sub_40060D() {return system("cat flag.txt"); }查看程序起始地址0x40060D ; Attributes: bp-based framesub_40060D proc near ; __unwind { push rbp mov rbp, rsp mov edi, offset comman…...
C++中的对象切割(Object slicing)问题
在C中,当我们把派生类对象向上强制转型为基类对象时,会造成对象切割(Object slicing)问题。 请看下面示例代码: #include <iostream> using namespace std;class CBase { public:virtual ~CBase() default;v…...
VxeTable 表格组件推荐
VxeTable 表格组件推荐 https://vxetable.cn 在前端开发中,表格组件是不可或缺的一部分,它们用于展示和管理数据,为用户提供了重要的数据交互功能。VxeTable 是一个优秀的 Vue 表格组件,它提供了丰富的功能和灵活的配置选项&…...
好消息:用 vue3+layui 共同铸造我们新的项目
前言: layui这个框架不知道多少人还在关注着,记得第一次接触它是在18年,后来随着vue,react的盛行,jquerylayui的模式受到了特别大的冲击,后来作者都放弃维护他的官方网站,转而在github/gitee上做…...
JS中 split(/s+/) 和 split(‘ ‘)的区别以及split()详细解法,字符串分割正则用法
博主: http://t.csdnimg.cn/e4gDi split用法详解: http://t.csdnimg.cn/6logr...
MySQL性能调优
🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开兴好久好久😎 📚系列专栏:Java全栈,…...
如何解决openal32.dll丢失,有什么办法解决
你第一次知道openal32.dll文件是在什么情况下,你了解过openal32.dll文件吗?如果电脑中openal32.dll丢失有什么办法可以解决,今天就教大家如何解决openal32.dll丢失,都有哪些办法可以解决openal32.dll丢失。 一.openal3…...
Nginx 如何配置http server 、负载均衡(反向代理)
目录 1. 关于 Nginx2. 配置http server3. 配置负载均衡 本文主要介绍 Nginx中如何配置 http server,负载均衡(反向代理)。 1. 关于 Nginx Nginx是一个开源的、高性能的、稳定的、简单的、功能丰富的HTTP和反向代理服务器,也可以用作IMAP/POP3/SMTP代理…...
windows docker desktop配置加速地址
目录 为什么常见加速地址在docker desktop上配置 为什么 https://hub.docker.com 是官方的镜像仓库地址,但是它的服务器地址是在国外,有时候访问和下载的速度差强人意。不过好在,我们可以进行远程仓库的设置,将仓库镜像地址设置为…...
戏剧影视设计制作虚拟仿真培训课件提升学生的参与感
说起影视制作,知名的影视制片人寥寥无几,大多数人还在依靠摄影机拍摄实景或搭建实体场景来不断精进场景布局和导演效果,成本高、投入人员多且周期长,随着VR虚拟现实技术的不断发展,利用VR模拟仿真技术进行影视制作实操…...
Transformer预测 | Pytorch实现基于Transformer的锂电池寿命预测(NASA数据集)
文章目录 效果一览文章概述模型描述程序设计参考资料效果一览 文章概述 Pytorch实现基于Transformer 的锂电池寿命预测,环境为pytorch 1.8.0,pandas 0.24.2 随着充放电次数的增加,锂电池的性能逐渐下降。电池的性能可以用容量来表示,故寿命预测 (RUL) 可以定义如下: SOH(t…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
