当前位置: 首页 > news >正文

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 → 删除光标所在的一个字符 并 进入插入模式
  • → 删除光标一个字符
  • nx → 删除光标所在的n字符
  • n→ 删除光标前n一个字符
  • dt字符 → 删除所有的内容,直到遇到字符
    • 比如dt"表示从当前光标开始 一直删除 直到''

1.2 查找

  • f + 字符 → 查找字符 

  • df + 字符 → 从这个光标开始 一直 删除到字符结束

  • cf + 字符 → 从这个光标开始 一直 删除到字符结束 并进入插入模式

1.3 命令 →  插入模式

  • → 光标不动 并 进入插入模式
  • 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 重复命令

  1. . → (小数点) 可以重复上一次的命令
  2. 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 + → 移动到本单词 或 下一个单词的结尾。

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> 增加1
    • q 停止录制
  • 先预执行一次: @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

  1. vim -On file1 file2 ... 使用大写的O参数来垂直分屏。
  2. vim -on file1 file2 ...使用小写的o参数来水平分屏。

4.2 创建水平 && 垂直分屏

  1. :split → 创建水平分屏 等价于 <C-w> s
  2. :vsplit → 创建垂直分屏  等价于 <C-w> + v
  3. :sp filename 上下分割,并打开一个新的文件。
  4. :vsp filename 左右分割,并打开一个新的文件。

4.3 关闭分屏

  1. <C-w> c 关闭当前窗口。
  2. <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字符 等价于 空格&#xff0c;tab&am…...

一文速通Java的JDBC编程

目录 &#x1f43d;JDBC的引入 什么是API JDBC的概念及作用 &#x1f347;准备工作 数据库驱动包 下载第三方库 &#x1f43e;JDBC 使用 将jar包导入项目 通过代码使用JDBC的API (1)创建数据源对象并设置属性 (2)和数据库服务器建立网络连接 (3)程序构造SQL语句 (…...

laravel中请求失败重试的扩展--Guzzle

背景 开发过程中&#xff0c;跟外部接口对接时&#xff0c;很常见的要考虑到失败重新的情况&#xff0c;这里记录一下我用的失败重试的情况&#xff0c; 重试方法 1、使用 Laravel 的 HTTP 客户端和异常处理 结合异常处理和重试逻辑 use Illuminate\Support\Facades\Http;…...

如何在vue中渲染markdown内容?

文章目录 引言什么是 markdown-it&#xff1f;安装 markdown-it基本用法样式失效&#xff1f;解决方法 高级配置语法高亮 效果展示 引言 在现代 Web 开发中&#xff0c;Markdown 作为一种轻量级的标记语言&#xff0c;广泛用于文档编写、内容管理以及富文本编辑器中。markdown…...

Mysql MVCC

MVCC 什么是MVCC MVCC&#xff08;多版本并发控制&#xff0c;Multi-Version Concurrency Control&#xff09; 是一种用于数据库管理系统&#xff08;DBMS&#xff09;中的并发控制机制&#xff0c;它允许多个事务同时执行而不互相阻塞&#xff0c;并通过创建数据的多个版本…...

Spring6.0新特性-HTTP接口:使用@HttpExchange实现更优雅的Http客户端

文章目录 一、概述二、使用1、创建接口HttpExchange方法2、创建一个在调用方法时执行请求的代理3、方法参数4、返回值5、错误处理&#xff08;1&#xff09;为RestClient&#xff08;2&#xff09;为WebClient&#xff08;3&#xff09;为RestTemplate 注意 一、概述 官方文档…...

springboot医院信管系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的管理系统应运而生&#xff0c;各行各业相继进入信息管理时代&a…...

迅为RK3568开发板篇OpenHarmony实操HDF驱动控制LED-编写内核 LED HDF 驱动程序

接下来编译 LED 驱动&#xff0c;该驱动用于在基于华为设备框架&#xff08;HDF&#xff09;的系统中控制 LED 灯的开关&#xff0c;完整代码如下所示&#xff1a; 更多内容可以关注&#xff1a;迅为RK3568开发板篇OpenHarmony...

[javaWeb]初识Web

将该图片在浏览器中打印出来 代码&#xff1a; <html> <head> <title>HTML初识</title> </head> <body> <h1>猫猫</h1> <img src "img/1.jpg"> </body> &l…...

复健第二天之[MoeCTF 2022]baby_file

打开题目在线环境可以看到&#xff1a; 感觉要用伪协议去求&#xff0c;但是我们并不知道flag的位置&#xff0c;这里我选择用dirsearch去扫一下&#xff1a; 最像的应该就是flag.php了 于是就构建payload&#xff1a; **?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

从零开始学数据库&#xff1a;DML操作详解 在今天的数字化时代&#xff0c;数据库的使用已经成为了各行各业的必备技能。无论你是想开发一个简单的应用&#xff0c;还是想要管理复杂的数据&#xff0c;掌握数据库的基本操作都是至关重要的。在这篇博客中&#xff0c;我们将专注…...

电脑换固态硬盘

参考&#xff1a; https://baijiahao.baidu.com/s?id1724377623311611247 一、根据尺寸和缺口可以分为以下几种&#xff1a; 1、M.2 NVME协议的固态 大部分笔记本是22x42MM和22x80MM nvme固态。 在京东直接搜&#xff1a; M.2 2242 M.2 2280 2、msata接口固态 3、NGFF M.…...

【大数据】机器学习------支持向量机(SVM)

支持向量机的基本概念和数学公式&#xff1a; 1. 线性可分的支持向量机 对于线性可分的数据集 &#xff0c;其中(x_i \in R^d) 是特征向量 是类别标签&#xff0c;目标是找到一个超平面 &#xff0c;使得对于所有 的样本 &#xff0c;对于所有(y_i -1) 的样本&#xff0c;…...

Android系统开发(八):从麦克风到扬声器,音频HAL框架的奇妙之旅

引言&#xff1a;音浪太强&#xff0c;我稳如老 HAL&#xff01; 如果有一天你的耳机里传来的不是《咱们屯里人》&#xff0c;而是金属碰撞般的杂音&#xff0c;那你可能已经感受到了 Android 音频硬件抽象层 (HAL) 出问题的后果&#xff01;在 Android 音频架构中&#xff0c…...

Golang Gin系列-2:搭建Gin 框架环境

开始网络开发之旅通常是从选择合适的工具开始的。在这个全面的指南中&#xff0c;我们将引导你完成安装Go编程语言和Gin框架的过程&#xff0c;Gin框架是Go的轻量级和灵活的web框架。从设置Go工作空间到将Gin整合到项目中&#xff0c;本指南是高效而强大的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然后服务器也卡住了动不了问题的…...

实力认证 | 海云安入选《信创安全产品及服务购买决策参考》

近日&#xff0c;国内知名安全调研机构GoUpSec发布了2024年中国网络安全行业《信创安全产品及服务购买决策参考》&#xff0c;报告从产品特点、产品优势、成功案例、安全策略等维度对各厂商信创安全产品及服务进行调研了解。 海云安凭借AI大模型技术在信创安全领域中的创新应用…...

Avalonia系列文章之小试牛刀

最近有朋友反馈&#xff0c;能否分享一下Avalonia相关的文章&#xff0c;于是就抽空学习了一下&#xff0c;发现Avalonia真的是一款非常不错的UI框架&#xff0c;值得花时间认真学习一下&#xff0c;于是边学习边记录&#xff0c;整理成文&#xff0c;分享给大家&#xff0c;希…...

中国数字安全产业年度报告(2024)

数字安全是指&#xff0c;在全球数字化背景下&#xff0c;合理控制个人、组织、国家在各种活动中面临的数字风险&#xff0c;保障数字社会可持续发展的政策法规、管理措施、技术方法等安全手段的总和。 数字安全领域可从三个方面对应新质生产力的三大内涵:一是基于大型语言模型…...

LabVIEW桥接传感器配置与数据采集

该LabVIEW程序主要用于配置桥接传感器并进行数据采集&#xff0c;涉及电压激励、桥接电阻、采样设置及错误处理。第一个VI&#xff08;"Auto Cleanup"&#xff09;用于自动清理资源&#xff0c;建议保留以确保系统稳定运行。 以下是对图像中各个组件的详细解释&#…...

简明docker快速入门并实践方法

简明docker快速入门并实践方法 前言&#xff1a;1. 什么是Docker&#xff1f;2. Docker的基本概念3. 安装配置Docker4. Docker基本命令&#xff1a;5. 简单实践&#xff1a;拉取Nginx镜像-自定义配置-推送镜像步骤 1&#xff1a;拉取Nginx镜像步骤 1.5&#xff08;可选&#xf…...

《MambaIR:一种基于状态空间模型的简单图像修复基线方法》学习笔记

paper&#xff1a;2402.15648 目录 摘要 一、引言 1、模型性能的提升依赖于网络感受野的扩大&#xff1a; 2、全局感受野和高效计算之间存在固有矛盾&#xff1a; 3、改进版 Mamba的巨大潜力 4、Mamba 在图像修复任务中仍面临以下挑战&#xff1a; 5、方法 6、主要贡献…...

链式前向星的写法

【图论02】动画说图的三种保存方式 降低理解门槛 邻接表 链式前向星 邻接矩阵_哔哩哔哩_bilibili 杭电ACM刘老师-算法入门培训-第12讲-拓扑排序及链式前向星_哔哩哔哩_bilibili 图论003链式前向星_哔哩哔哩_bilibili&#xff08;链式前向星的遍历&#xff09; head数组的下标…...

【逆境中绽放:万字回顾2024我在挑战中突破自我】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 一、引言二、个人成长与盘点情感与心理成长学习与技能提升其它荣誉 三、年度创作历程回顾创作内容概…...

尺取法(算法优化技巧)

问题和序列的区间有关&#xff0c;且需要操作两个变量&#xff0c;可以用两个下标&#xff08;指针&#xff09;i 和 j 扫描区间。 1&#xff0c;反向扫描&#xff0c;i 从头&#xff0c;j 从尾&#xff0c;在中间相遇。 例1.1&#xff08;P37&#xff09; 找指定和的整数对…...

基于 K-Means 聚类分析实现人脸照片的快速分类

注:本文在创作过程中得到了 ChatGPT、DeepSeek、Kimi 的智能辅助支持,由作者本人完成最终审阅。 在 “视频是不能 P 的” 系列文章中,博主曾先后分享过人脸检测、人脸识别等相关主题的内容。今天,博主想和大家讨论的是人脸分类问题。你是否曾在人群中认错人,或是盯着熟人的…...

【漏洞预警】FortiOS 和 FortiProxy 身份认证绕过漏洞(CVE-2024-55591)

文章目录 一、产品简介二、漏洞描述三、影响版本四、漏洞检测方法五、解决方案 一、产品简介 FortiOS是Fortinet公司核心的网络安全操作系统&#xff0c;广泛应用于FortiGate下一代防火墙&#xff0c;为用户提供防火墙、VPN、入侵防御、应用控制等多种安全功能。 FortiProxy则…...

7.5.4 MVCC优化测试

作者&#xff1a; h5n1 原文来源&#xff1a; https://tidb.net/blog/4e02d900 1. 背景 由于MVCC 版本数量过多导致rocksdb扫描key数量过多影响SQL执行时间是tidb经常出现问的问题&#xff0c;tidb也一直在致力于优化该问题。 一些优化方式包括比&#xff1a; (1) 从传统…...

heliohost wordpress/怎么做网站教程视频

阅读本文大概需要 2.8 分钟。“这篇文章&#xff0c;我们来聊一下对于一个支撑日活百万用户的高并系统&#xff0c;他的数据库架构应该如何设计&#xff1f;看到这个题目&#xff0c;很多人第一反应就是&#xff1a;分库分表啊&#xff01;但是实际上&#xff0c;数据库层面的分…...

阳光电子商务平台/网络seo营销推广

undefined &#xff1a;表示已经声明变量&#xff0c;但是没有赋初始值&#xff0c;返回类型为 undefined&#xff1b; null&#xff1a;的返回类型是object&#xff0c;表示一个空对象引用。转载于:https://www.cnblogs.com/guanyushan/p/7768487.html...

青海网站设计/什么软件可以免费引流

Discuz!X 的插件很丰富&#xff0c;在Discuz&#xff01;扩展中心很有多插件供免费使用&#xff0c;但是Google了一下基本没有一份关于Discuz!X 插件开发的完整教程&#xff0c;有也是几年前的版本的&#xff0c;官方论坛上有一个帖子是算开发的教程&#xff0c;但是不算完整。…...

web网站如何做负载均衡/公司网址怎么制作

【题目描述】 输入一个矩阵&#xff0c;按照从外向里以顺时针的顺序依次打印出每一个数字。 &#xff08;原题地址&#xff09; 【样例示例】 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]]输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff…...

创业做旅游网站/百度推广官网电话

在ASP.NET MVC 无需Web Form和Report Viewer 预览SSRS报表解决方案参考文章&#xff1a; &#xff08;1&#xff09;在ASP.NET MVC 无需Web Form和Report Viewer 预览SSRS报表解决方案 &#xff08;2&#xff09;https://www.cnblogs.com/unruledboy/archive/2013/06/07/ASPN…...

网站开发语言windows/行者seo

1. 问题描述&#xff1a; 给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。 示例 1&#xff1a; 输入&#xff1a; 3 / \ 9 20 / \ 15 7 输出&#xff1a;[3, 14.5, 11] 解释&#xff1a; 第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 …...