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 新按键 老按键

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/5899.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙参考文档和问题记录

本文用于记录鸿蒙使用过程中的问题和相关参考文档 问题记录 1. 兼容性测试套件问题 ActsStartAbilityForResultNoTargetBundleListStageTest套件测试失败&#xff1a;模块FreeInstall 技术资料 1. HarmonyOS应用如何打包HAP并安装到真机 HarmonyOS应用如何打包HAP并安装到真…

NewStar CTF week1 web wp

谢谢皮蛋 做这题之前需要先去学习一些数据库的知识 1 order by 2 1可以理解为输入的id&#xff0c;是一个占位符&#xff0c;按第二列排序用来测试列数&#xff0c;如果没有两列则会报错-1 union select 1,2 -1同样是占位符&#xff0c;union的作用是将注入语句合并到原始语句…

3.CSS的背景

通过CSS背景属性&#xff0c;可以给页面元素添加背景样式。 背景属性可以设置背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等。 3.1 背景颜色 background-color属性定义了元素的背景颜色 background-color:颜色值&#xff1b; 一般情况下元素背景颜色默认值…

登录认证(4):令牌技术:JWT令牌

如上文所说&#xff08;登录认证&#xff08;1&#xff09;&#xff1a;登录的基本逻辑及实现思路登录&#xff09;&#xff0c;因为 HTTP协议是无状态的协议&#xff0c;我们需要使用会话跟踪技术实现同一会话中不同请求之间的数据共享&#xff0c;但Cookie技术和Session技术都…

2025.1.20——二、buuctf BUU UPLOAD COURSE 1 1 文件上传

题目来源&#xff1a;buuctf BUU UPLOAD COURSE 1 1 目录 一、打开靶机&#xff0c;查看信息 二、解题思路 step 1&#xff1a;上传一句话木马.php文件康康回显 step 2&#xff1a;蚁剑连接 三、小结 一、打开靶机&#xff0c;查看信息 这里提示到了文件会被上传到./uplo…

【玩转全栈】----Django制作部门管理页面

目录 大致效果 BootStrap BootStrap简介 BootStrap配置 BootStrap使用 基本配置 部分代码解释及注意&#xff1a; 用户编辑&#xff1a; 新添数据&#xff1a; 删除数据&#xff1a; 大致效果 我先给个大致效果&#xff0c;基本融合了Django、Bootstrap、css、html等等。 基于D…

新年好(Dijkstra+dfs/全排列)

1135. 新年好 - AcWing题库 思路&#xff1a; 1.先预处理出1,a,b,c,d,e到其他点的单源最短路&#xff0c;也就是进行6次Dijkstra 2.计算以1为起点的这6个数的全排列&#xff0c;哪种排列方式所得距离最小&#xff0c;也可以使用dfs 1.Dijkstradfs #define int long longusing …

Golang之Context详解

引言 之前对context的了解比较浅薄&#xff0c;只知道它是用来传递上下文信息的对象&#xff1b; 对于Context本身的存储、类型认识比较少。 最近又正好在业务代码中发现一种用法&#xff1a;在每个协程中都会复制一份新的局部context对象&#xff0c;想探究下这种写法在性能…

AIGC浪潮下,图文内容社区数据指标体系如何构建?

文章目录 01 案例&#xff1a;以图文内容社区为例实践数据指标体构建02 4个步骤实现数据指标体系构建1. 明确业务目标&#xff0c;梳理北极星指标2. 梳理业务流程&#xff0c;明确过程指标3. 指标下钻分级&#xff0c;构建多层级数据指标体系4. 添加分析维度&#xff0c;构建完…

数据结构:二叉树

目录 一、树型结构 1、基本概念 2、重要概念 3、树的表示形式 二、二叉树 1、概念 2、两种特殊的二叉树 3、二叉树的性质 4、二叉树的存储 5、二叉树的遍历 二叉树的构建 &#xff08;1&#xff09;前序遍历 &#xff08;2&#xff09;中序遍历 &#xff08;3&am…

SpringBoot项目中的异常处理

定义错误页面 SpringBoot 默认的处理异常的机制&#xff1a;SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会像/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicExceptionController 来处理/error 请求&#xff0c;然后跳转到…

《安富莱嵌入式周报》第349期:VSCode正式支持Matlab调试,DIY录音室级麦克风,开源流体吊坠,物联网在军工领域的应用,Unicode字符压缩解压

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; 《安富莱嵌入式周报》第349期&#xff1a;VSCode正式支持Matlab调试&#xff0c;DIY录音室级麦克风…

C++priority_queue模拟实现

Cpriority_queue模拟实现 1.priority_queue基本概念2.priority_queue基本结构3.size()成员函数4.empty()成员函数5.top()成员函数6.push()成员函数7.pop()成员函数8.构造函数9.完整代码 &#x1f31f;&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f;&#…

[STM32 HAL库]串口中断编程思路

一、前言 最近在准备蓝桥杯比赛&#xff08;嵌入式赛道&#xff09;&#xff0c;研究了以下串口空闲中断DMA接收不定长的数据&#xff0c;感觉这个方法的接收效率很高&#xff0c;十分好用。方法配置都成功了&#xff0c;但是有一个点需要进行考虑&#xff0c;就是一般我们需要…

嵌入式 工程配置

本次用的STM32F4芯片系列 目录 1. 新建文件夹 2. 新建文件夹下创建 3. 打开keil5 3.1.1 点击菜单栏project 点击new project 3.1.2. 选择刚刚新建的文件夹 3.1.3.将项目文件保存到Project文件夹里 3.1.4. 将项目命名这里命名为STM32 保存 3.1.5. 保存好后会跳出选择芯…

我的图形布局 组织结构图布局

组织结构图布局,有的人也叫它树状布局,在图形中是经常用到的布局算法.形成类似如下图的图形布局方式 首先创建一个类, public class TreeLayouter {private int m_space 40;/// <summary>/// 空间间隔/// </summary>public int Space{get { return m_space; }se…

计算机网络介质访问控制全攻略:从信道划分到协议详解!!!

一、信道划分介质访问控制 介质访问控制&#xff1a;多个节点共享同一个“总线型”广播信道时&#xff0c;可能发生“信号冲突” 应该怎么控制各节点对传输介质的访问&#xff0c;才能减少冲突&#xff0c;甚至避免冲突? 时分复用(TDM) 时分复用&#xff1a;将时间分为等长的“…

sql主从同步

今天给大家介绍两种mysql的主从同步方式&#xff1a;第一种是基于binlogzhu主从同步&#xff1b;第二种就是基于gtid的主从同步方式。 首先给大家介绍一下什么是sql的主从复制。 主从复制&#xff1a; 通过将MySQL的某一台主机&#xff08;master&#xff09;的数据复制到其…

计算机组成原理——数据表示(二)

当生活的压力和困惑缠绕在身边&#xff0c;我们往往需要振奋精神&#xff0c;勇往直前。无论在何种困境中&#xff0c;我们都要保持积极的态度和坚定的信念。将悲观的情绪抛之脑后&#xff0c;展现出坚强的意志力和无尽的活力。振奋精神意味着我们要战胜自己内心的负面情绪&…

Spring Boot整合Thymeleaf、JDBC Template与MyBatis配置详解

本文将详细介绍如何在Spring Boot项目中整合Thymeleaf模板引擎、JDBC Template和MyBatis&#xff0c;涵盖YAML配置、依赖版本匹配、项目结构设计及代码示例。 一、版本兼容性说明 Spring Boot版本与Java版本对应关系 Spring Boot 2.x&#xff1a;支持Java 8、11&#xff08;推…