vim练级攻略(精简版)
vim推荐配置:
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
0. 规定
Ctrl-λ 等价于 <C-λ>
:
command等价于:command <回车>n 等价于 数字
blank字符 等价于 空格,tab,换行,回车等
1. 命令模式 -> NORMAL
<operation> 其他 <motion>
1.0 复制
- yy 等价于 shift + y → 复制当前行
- nyy → 从本行向下,复制n行
- yw → 从光标开始复制到这个单词尾
- nyw → 从光标开始复制到n个单词尾
1.1 删除字符
x→ 删除光标所在的一个字符 s → 删除光标所在的一个字符 并 进入插入模式- X → 删除光标前一个字符
nx→ 删除光标所在的n字符- nX → 删除光标前n一个字符
dt字符→ 删除所有的内容,直到遇到字符- 比如dt"表示从当前光标开始 一直删除 直到''
1.2 查找
-
f + 字符 → 查找字符
-
df + 字符 → 从这个光标开始 一直 删除到字符结束
-
cf + 字符 → 从这个光标开始 一直 删除到字符结束 并进入插入模式
1.3 命令 → 插入模式
- i → 光标不动 并 进入插入模式
a→ 光标向后 并 进入插入模式o→ 向下新增一行 并 进入插入模式O→ 向上新增一行 并 进入插入模式cw→ 从光标位置 删除 连续字符 并 进入 插入模式(可以有多种组合)- cnw → 从光标位置 删除 连续n字符 并 进入 插入模式(可以有多种组合)
- shfit + i → 光标移动到行首 并 进入插入模式
- shift + a → 光标移动到行尾 并 进入插入模式
1.4 简单的光标移动
0→ 数字零,到行头- shift+4→ 到本行行尾
- shift+6→ 到本行第一个不是blank字符的位置
g_→ 到本行最后一个不是blank字符的位置
1.5 对文件操作
:e <path/to/file>→ 打开文件:w→ 保存文件:q!→ 退出文件 且 不保存:x,ZZ或:wq→ 保存并退出 (:x表示仅在需要时保存,ZZ不需要输入冒号并回车):saveas <path/to/file>→ 另存为<path/to/file>,还会打开这个文件:bn和:bp→ 切换文件,下一个文件,上一个文件 (n表示next,p表示prev)- :n 文件名→ 切换到这个文件
1.6 重复命令
.→ (小数点) 可以重复上一次的命令- N<command> → 重复某个命令N次
1.7 高效的光标移动
1.7. 1 按行移动
gg→ 到第一行- G → 到最后一行
- 数字+
G→ 到第 几行,或者: 数字→到第几行 - n + enter→ 向下跳几行
1.7.2 按单词移动
以默认方式(字母,数字和下划线) 为分割符
w→ 移动到下一个单词的开头。b 则表示 上一个单词的开头e→ 移动到本单词 或 下一个单词的结尾。
以blank字符为分隔符
- shift + w → 到下一个单词的开头,shift + b 则表示 上一个单词的开头
- shift + e → 移动到本单词 或 下一个单词的结尾。
1.7.3 (最强)在同一行的光标移动
从左向右 (正方向)
- f+字符→光标移动到这个字符处
- t+字符→光标移动到这个字符的前一个位置
从右向左 (反方向)
- shift + f+字符→光标移动到这个字符处
- shift + t+字符→光标移动到这个字符的后一个位置
注: 数字 + f + 字符→移动到当前的第几个字符上
注:
1.8 字符大小写转换
-
~ → 完成光标所在位置字符的大小写切换
-
n~ → 完成光标所在位置开始往后的n个字符的大小写切换
1.9 最强的光标移动
%: 匹配括号移动,包括(,{,[.(需要把光标先移到括号上)*和#: 匹配光标当前所在的单词,移动光标到下一个(或上一个)
匹配单词(*是下一个,#是上一个)
1.10 翻页
-
<C-b>→ 上翻一页 -
<C-f>→ 下翻一页 <C-u>→ 上翻半页<C-d>→ 下翻半页
1.11 替换字符
- r → 替换光标所在位置的字符
- R → 替换光标所到位置的字符,直到按下「Esc」键为止
1.12 (重要)区域选择
<action>a<object>或<action>i<object>

-
action可以是任何的命令,如
d(删除),y(拷贝),v(可以视模式选择)。 - object 可能是:
w一个单词,W一个以空格为分隔的单词,s一个句字,p一个段落。也可以是一个特别的字符:"、'、)、}、]。 <action>a<object>(包括object),<action>i<object>(不包括object),
1.13 (重要)块操作: <C-v>
1.13.1 快速注释
- 按下 ctrl+v 进入可视化模式;
- 上下键(只是上下键)移动光标,选中多行的开头;
- 按下大写的I,此时进入insert插入模式;
- 输入要插入的注释符,如:#、//;
- 按下ESC,就会看到多行代码被注释。
1.14 (重要)自动提示
<C-n>和<C-p>

-
<C-n> 表示自动补齐的下一个 <C-p> 表示自动补齐的上一个
1.15 宏录制: qa 操作序列 q, @a, @@
qa把你的操作记录在寄存器a。- q : 停止录制
- 于是
@a会replay被录制的宏。 @@是一个快捷键用来replay最新录制的宏
1.15.1实际操作->快速编号

注 : Y 等价于 yy
qaYp<C-a>q→qa开始录制Yp复制当前行,并粘贴<C-a>增加1q停止录制
先预执行一次: @a→ 在1下面写下 2重复执行多次 @@→ 在2 正面写下3- 现在做
5@@会创建新的5行,并把数据增加到 8
2. 可视化模式
v→进入单个选择V→进入行选择<C-v>→进入块选择
2.1 实际操作 -> 在所有行尾加;
<C-v>- 选中相关的行 (可使用
j或<C-d>或是/pattern或是%等……) - $ 到行最后
A+字符,按ESC。
2.2 其他操作
J→ 把所有的行连接起来(变成一行)<或>→ 左右缩进=→ 自动给缩进(非常好用)
3. 底行模式->COMMAND


- : vs+文件名:分屏操作
-
:wq→ 存盘 + 退出 (:w存盘,:q退出) :help <command>→ 显示相关命令的帮助。你也可以就输入:help而不跟命令
(退出帮助需要输入:q)- :!cmd:不退出vim执行对应的命令(执行命令行,编译,运行,查看man等等)
/pattern→ 搜索pattern的字符串(如果搜索出多个匹配,可按n键到下一个)
4. 分屏操作
4.1 分屏启动Vim

- vim -On file1 file2 ... 使用大写的O参数来垂直分屏。
- vim -on file1 file2 ...使用小写的o参数来水平分屏。
4.2 创建水平 && 垂直分屏
:split→ 创建水平分屏 等价于<C-w> +s:vsplit→ 创建垂直分屏 等价于<C-w> + v- :sp filename 上下分割,并打开一个新的文件。
- :vsp filename 左右分割,并打开一个新的文件。
4.3 关闭分屏
<C-w>c 关闭当前窗口。<C-w>q 关闭当前窗口,如果只剩最后一个了,则退出Vim。
4.3 在分屏中移动光标
-
<C-w> + dir: dir就是方向,可以是hjkl或是 ←↓↑→ 中的一个,其用来切换分屏。 -
<C-w>+ w:把光标移到下一个的屏中。
4.4 更改分屏的屏幕尺寸
<C-w>+ = : 让所有的屏都有一样的高度。<C-w>+ : 增加高度<C-w>- : 减少高度- <C-w> + _ : 最大化尺寸
5. vim改键位的操作


- vim的配置文件都在vimrc里面
- nnoremap 新按键 老按键
相关文章:
vim练级攻略(精简版)
vim推荐配置: curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh 0. 规定 Ctrl-λ 等价于 <C-λ> :command 等价于 :command <回车> n 等价于 数字 blank字符 等价于 空格,tab&am…...
一文速通Java的JDBC编程
目录 🐽JDBC的引入 什么是API JDBC的概念及作用 🍇准备工作 数据库驱动包 下载第三方库 🐾JDBC 使用 将jar包导入项目 通过代码使用JDBC的API (1)创建数据源对象并设置属性 (2)和数据库服务器建立网络连接 (3)程序构造SQL语句 (…...
laravel中请求失败重试的扩展--Guzzle
背景 开发过程中,跟外部接口对接时,很常见的要考虑到失败重新的情况,这里记录一下我用的失败重试的情况, 重试方法 1、使用 Laravel 的 HTTP 客户端和异常处理 结合异常处理和重试逻辑 use Illuminate\Support\Facades\Http;…...
如何在vue中渲染markdown内容?
文章目录 引言什么是 markdown-it?安装 markdown-it基本用法样式失效?解决方法 高级配置语法高亮 效果展示 引言 在现代 Web 开发中,Markdown 作为一种轻量级的标记语言,广泛用于文档编写、内容管理以及富文本编辑器中。markdown…...
Mysql MVCC
MVCC 什么是MVCC MVCC(多版本并发控制,Multi-Version Concurrency Control) 是一种用于数据库管理系统(DBMS)中的并发控制机制,它允许多个事务同时执行而不互相阻塞,并通过创建数据的多个版本…...
Spring6.0新特性-HTTP接口:使用@HttpExchange实现更优雅的Http客户端
文章目录 一、概述二、使用1、创建接口HttpExchange方法2、创建一个在调用方法时执行请求的代理3、方法参数4、返回值5、错误处理(1)为RestClient(2)为WebClient(3)为RestTemplate 注意 一、概述 官方文档…...
springboot医院信管系统
摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…...
迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序
接下来编译 LED 驱动,该驱动用于在基于华为设备框架(HDF)的系统中控制 LED 灯的开关,完整代码如下所示: 更多内容可以关注:迅为RK3568开发板篇OpenHarmony...
[javaWeb]初识Web
将该图片在浏览器中打印出来 代码: <html> <head> <title>HTML初识</title> </head> <body> <h1>猫猫</h1> <img src "img/1.jpg"> </body> &l…...
复健第二天之[MoeCTF 2022]baby_file
打开题目在线环境可以看到: 感觉要用伪协议去求,但是我们并不知道flag的位置,这里我选择用dirsearch去扫一下: 最像的应该就是flag.php了 于是就构建payload: **?filephp://filter/convert.base64-encode/resource…...
uniapp 微信小程序 editor 富文本编辑器
<view class"inp boxsizing"><view class"contentBox"><!-- 富文本编辑器 --><view classwrapper><view classtoolbar tap"format"><view :class"formats.bold ? ql-active : " class"iconfon…...
SparkSQL函数
文章目录 1. SparkSQL函数概述2. SparkSQL内置函数2.1 常用内置函数分类2.2 常用数组函数2.2.1 array()函数1. 定义2. 语法3. 示例 2.3 常用日期与时间戳函数2.4 常见聚合函数2.5 常见窗口函数 3. SparkSQL自定义函数3.1 自定义函数分类3.2 自定义函数案例演示 1. SparkSQL函数…...
从零开始学数据库 day2 DML
从零开始学数据库:DML操作详解 在今天的数字化时代,数据库的使用已经成为了各行各业的必备技能。无论你是想开发一个简单的应用,还是想要管理复杂的数据,掌握数据库的基本操作都是至关重要的。在这篇博客中,我们将专注…...
电脑换固态硬盘
参考: https://baijiahao.baidu.com/s?id1724377623311611247 一、根据尺寸和缺口可以分为以下几种: 1、M.2 NVME协议的固态 大部分笔记本是22x42MM和22x80MM nvme固态。 在京东直接搜: M.2 2242 M.2 2280 2、msata接口固态 3、NGFF M.…...
【大数据】机器学习------支持向量机(SVM)
支持向量机的基本概念和数学公式: 1. 线性可分的支持向量机 对于线性可分的数据集 ,其中(x_i \in R^d) 是特征向量 是类别标签,目标是找到一个超平面 ,使得对于所有 的样本 ,对于所有(y_i -1) 的样本,…...
Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅
引言:音浪太强,我稳如老 HAL! 如果有一天你的耳机里传来的不是《咱们屯里人》,而是金属碰撞般的杂音,那你可能已经感受到了 Android 音频硬件抽象层 (HAL) 出问题的后果!在 Android 音频架构中,…...
Golang Gin系列-2:搭建Gin 框架环境
开始网络开发之旅通常是从选择合适的工具开始的。在这个全面的指南中,我们将引导你完成安装Go编程语言和Gin框架的过程,Gin框架是Go的轻量级和灵活的web框架。从设置Go工作空间到将Gin整合到项目中,本指南是高效而强大的web开发路线图。 安装…...
FGC_grasp复现
复现FGC_grasp 环境配置数据集准备RuntimeError: CUDA error: invalid device ordinal 问题的解决方案raise BadZipFile("File is not a zip file") zipfile.BadZipFile: File is not a zip file问题的解决方案加载数据集时总是被kill然后服务器也卡住了动不了问题的…...
实力认证 | 海云安入选《信创安全产品及服务购买决策参考》
近日,国内知名安全调研机构GoUpSec发布了2024年中国网络安全行业《信创安全产品及服务购买决策参考》,报告从产品特点、产品优势、成功案例、安全策略等维度对各厂商信创安全产品及服务进行调研了解。 海云安凭借AI大模型技术在信创安全领域中的创新应用…...
Avalonia系列文章之小试牛刀
最近有朋友反馈,能否分享一下Avalonia相关的文章,于是就抽空学习了一下,发现Avalonia真的是一款非常不错的UI框架,值得花时间认真学习一下,于是边学习边记录,整理成文,分享给大家,希…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
