Vim 快捷键

本文翻译自:https://devhints.io/vim


文章目录

    • 1、Basic
      • Exiting
      • Exiting insert mode
    • 2、编辑
      • 编辑
      • 剪切板
      • Visual 模式
        • 在可视模式下
      • 查找和替换
    • 3、导航
      • 方向
      • 单词
      • 线
      • 性格
      • 文件
      • 窗口
      • 搜索
    • 4、操作符
      • 用法
      • 操作符列表
      • 例子
    • 5、文本对象
      • 用法
      • 文本对象
      • 例子
      • 差异
    • 6、杂项
      • 标签页
      • 折叠
      • 导航
      • 跳跃
      • 计数器
      • 窗口
      • 标签
      • 案例
      • Marks
      • 杂项
      • 命令行
      • 文本对齐
      • 计算器
      • 退出并出现错误
      • 拼写检查
    • Also see


1、Basic



Vim是一个非常高效的文本编辑器。

有关快捷方式表示法,请参见:help key-notation


Exiting

:q关闭文件
:qa关闭所有文件
:w保存
:wq / :x保存并关闭文件
ZZ保存并退出
ZQ退出而不检查更改

Exiting insert mode

Esc / <C-[>退出插入模式
<C-C>退出插入模式,并中止当前命令

2、编辑


编辑

a追加
A从行尾追加
i插入
o下一行
O上一行
s删除字符并插入
S删除行并插入
C删除直到行尾并插入
r替换一个字符
R进入替换模式
u撤消更改
<C-R>重做更改

剪切板

x删除字符
dd删除线(剪切)
yy扬线(复制)
p粘贴
P粘贴前
"*p / "+p粘贴从系统剪切板
"*y / "+y粘贴到系统剪切板

Visual 模式

v进入可视模式
V进入可视线模式
<C-V>进入可视屏蔽模式

在可视模式下
d / x删除选择
s替换选择
y扬基选择(复制)

有关您可以执行的其他操作,请参阅操作符。


查找和替换

:%s/foo/bar/g : 在整个文档中将foo替换为bar


3、导航


方向

h j k l箭头键
<C-U> / <C-D>半页 上/下
<C-B> / <C-F>页面 上/下

单词

b / w上一个/下一个单词
ge / e上一个/下一个单词结尾

线

0 (零)行首
^行首(空格后)
$行尾

性格

fc前进到字符c
Fc后向字符c

文件

gg第一行
G最后一行
:{number}Go to line{number}
{number}GGo to line{number}
{number}jGo down{number}
{number}kGo up{number}

窗口

zz居中此行
zt顶部此行
zb底部此行
H移动到屏幕顶部
M移动到屏幕中间
L移动到屏幕底部

搜索

n下一个匹配搜索模式
N上一个拟合
*光标下的下一个整词
#光标下的上一个整词

4、操作符


用法

运算符允许您在一系列文本(由运动定义)中进行操作。这些在正常模式下执行。

dw
运算符Motion

操作符列表

d删除
y扬克(复制)
c更改(删除然后插入)
>缩进右
<缩进左
=自动缩进
g~交换大小写
gU大写
gu小写
!滤波器通过外部程序

请参见 :help operator


例子

将运算符与动作结合使用。

dd(重复字母)删除当前行
dw删除到下一个单词
db删除到单词的开头
2dd删除2行
dip删除文本对象(段落内)
(在可视模式下) d删除选择

请参阅::help motion.txt


5、文本对象


用法

文本对象允许您在文本块(对象)中或周围进行操作(使用运算符)。

vip
运算符[i]nside or [a]round文本对象

文本对象

p段落
wWord
s句子
[ ( { <A [], (), 或{}屏蔽
' " `A引号字符串
bA block [(
BA block in [{
tA XML tag block

例子

vip选择段落
vipipipip选择更多
yipYank内部段落
yapYank段落(包括换行符)
dip删除内部段落
cip更改内部段落

有关您可以执行的其他操作,请参阅操作符。


差异

gvimdiff file1 file2 [file3] : 在HMI中查看文件之间的差异


6、杂项


标签页

:tabedit [file]在新标签页中编辑文件
:tabfind [file]打开文件如果存在于新标签页
:tabclose关闭当前标签
:tabs列出所有标签
:tabfirst转到第一个标签
:tablast转到最后一个标签
:tabn转到下一个标签
:tabp转到上一个标签

折叠

zo / zO打开
zc / zC关闭
za / zA切换
zv打开折叠
zM关闭所有
zR打开所有
zm折叠更多(foldlevel+=1)
zr折叠更少(foldlevel-=1)
zx更新折叠

大写的是递归的(例如,zO是递归打开的)。


导航

%最近/匹配{[()]}
[( [{ [<上一个({<
])下一个
[m上一个方法开始
[M上一个方法结束

跳跃

<C-O>返回到上一个位置
<C-I>前进
gf转到光标中的文件

计数器

<C-A>增量数
<C-X>递减

窗口

z{height}<Cr> : 将窗格调整为{height}行高


标签

:tag Classname跳转到Classname的第一个定义
<C-]>跳转到定义
g]查看所有定义
<C-T>返回到最后一个标签
<C-O> <C-I>后退/前进
:tselect Classname查找Classname的定义
:tjump Classname查找Classname的定义(自动选择第一个)

案例

~切换大小写(Case=>cASE)
gU大写
gu小写
gUU大写当前行(也gUgU
guu小写当前行(也gugu

在可视或普通模式下执行这些操作。


Marks

``^`插入模式下光标的最后位置
``.`当前缓冲区中的最后更改
``"`最后退出当前缓冲区
``0`在最后编辑的文件中
''返回当前缓冲区中从哪里跳转的行
``返回当前缓冲区中从哪里跳转的位置
``[`到先前更改或拉拽文本的开头
``]`到先前更改或拉拽文本的结束
``<`到最后一个视觉选择的开始
``>`到最后一个视觉选择的结束
ma将此光标位置标记为a
``a`跳转到光标位置a
'a跳转到位置a
d'a从当前行删除到标记行a
d`a从当前位置删除到标记a
c'a的位置将文本从当前行更改为a
y`a的行从当前位置扬克文本到a
:marks列出所有当前标记
:delm a删除标记a
:delm a-d删除标记abcd
:delm abc删除标记abc

杂项

.重复最后一个命令
]p粘贴到当前缩进级别下
:set ff=unix将Windows行尾转换为Unix行尾

命令行

<C-R><C-W>将当前字插入到命令行
<C-R>"从"寄存器 粘贴
<C-X><C-F>插入模式下路径的自动完成

文本对齐

:center [width]
:right [width]
:left

请参阅:help formatting


计算器

<C-R>=128/2 : 显示除法的结果:‘64’

在插入模式下执行此操作。


退出并出现错误

:cq
:cquit

类似于:qa,但抛出错误。非常适合中止Git命令。


拼写检查

:set spell spelllang=en_us打开美国英语拼写检查
]s移动到光标后的下一个拼写错误的单词
[s移动到光标前的前一个拼写错误的单词
z=建议在光标下/后的单词拼写
zg将单词添加到拼写列表
zw将单词标记为坏/拼写错误
zu/C-X (Insert Mode)从spellfile中为光标下的坏单词建议单词

请参阅:help spell


Also see

  • Vim cheatsheet (vim.rotrr.com)
  • Vim documentation (vimdoc.sourceforge.net)
  • Interactive Vim tutorial (openvim.com)

2024-06-05(三)

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

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

相关文章

kettle_Hbase

kettle_Hbase ☀Hbase学习笔记 读取hdfs文件并将sal大于1000的数据保存到hbase中 前置说明&#xff1a; 1.需要配置HadoopConnect 将集群中的/usr/local/soft/hbase-1.4.6/conf/hbase-site.xml复制至Kettle中的 Kettle\pdi-ce-8.2.0.0-342\data-integration\plugins\pentah…

8.1 基本打印功能

本文仅供学习交流&#xff0c;严禁用于商业用途&#xff0c;如本文涉及侵权请及时联系本人将于及时删除 在使用“MFC应用”项目模板生成应用程序的过程中&#xff0c;如果在“高级功能”窗口中不取消对打印和打印预览的设置&#xff0c;那么应用程序就已经具备了简单的打印和打…

MySQL—多表查询—练习(2)

一、引言 接着上篇博客《 MySQL多表查询——练习&#xff08;1&#xff09;》继续完成剩下的案例需求。 二、案例 &#xff08;0&#xff09;三张表&#xff08;员工表、部门表、薪资等级表&#xff09; 员工表&#xff1a;emp 部门表&#xff1a;dept 薪资等级表&#xff1a;…

让GNSSRTK不再难【第二天-第7部分2】

状态更新计算过程&#xff1a; 计算卡尔曼增益&#xff1a; 根据预测的误差协方差矩阵 P k − P_k^- Pk−​ 和观测噪声协方差矩阵 R R R 计算卡尔曼增益 K k K_k Kk​&#xff1a; K k P k − H T ( H P k − H T R ) − 1 K_k P_k^- H^T (H P_k^- H^T R)^{-1} Kk​Pk…

使用 PlatformIO 将文件上传到 ESP32-S3 的 SPIFFS 文件系统

PlatformIO环境 将文件上传到 ESP32-S3 的 SPIFFS 文件系统 介绍&#xff1a; PlatformIO 是一个流行的开发平台&#xff0c;用于编写、构建和上传嵌入式项目。ESP32-S3 是 Espressif 推出的一款功能强大的嵌入式开发板&#xff0c;具有丰富的外设和通信接口。本文将介绍如何…

前端 JS 经典:动态执行 JS

前言&#xff1a;怎么将字符串当代码执行。有 4 中方式实现 eval、setTimeout、创建 script 标签、new Function 1. eval 特点&#xff1a;同步执行&#xff0c;当前作用域 var name "yq"; function exec(string) {var name "yqcoder";eval(string); …

「C系列」C 数组

文章目录 一、C 数组1. 声明数组2. 初始化数组3. 访问数组元素4. 数组越界5. 多维数组 二、C 操作数组的方法有哪些三、C 数组-应用场景1. 存储固定数量的数据2. 实现算法&#xff08;如排序&#xff09;3. 处理数据集合 四、相关链接 一、C 数组 在C语言中&#xff0c;数组是…

Java 类与对象 -- Java 语言的类与对象、构造器、static、final、包和 JAR

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 006 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…

认识Spring中的BeanFactoryPostProcessor

先看下AI的介绍 在Spring 5.3.x中&#xff0c;BeanFactoryPostProcessor是一个重要的接口&#xff0c;用于在Spring IoC容器实例化任何bean之前&#xff0c;读取bean的定义&#xff08;配置元数据&#xff09;&#xff0c;并可能对其进行修改。以下是关于BeanFactoryPostProce…

【学习笔记】finalshell上传文件夹、上传文件失败或速度为0

出现标题所述的情况&#xff0c;大概率是finalshell上传文件的过程中的权限不够。 可参照&#xff1a;Finalshell上传文件失败或者进度总为百分之零解决方法 如果不成功&#xff0c;建议关闭客户端重试。 同时建议在设置finalshell的ssh连接时根据不同用户设置多个连接&#xf…

OJ刷题——2086.AI=?、2087.剪花布条、KPM算法

2086.AI&#xff1f; 题目描述 Problem - 2086 运行代码 #include <iostream> #include <cstdio> using namespace std; const int N 3005; int main() {int n;double Ao, An;double num[N];while (cin>>n) {cin >> Ao>>An;for (int i 1; i…

java技术专家面试指南100问【java学习+面试宝典】(二)

适配器模式是什么&#xff1f;什么时候使用&#xff1f; 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式&#xff0c;它结合了两个独立接口的功能。适配器模式提供对接口的转换。如果你的客户端使用某…

kubernetes(k8s)集群部署(2)

目录 k8s集群类型 k8s集群规划&#xff1a; 1.基础环境准备&#xff1a; &#xff08;1&#xff09;保证可以连接外网 &#xff08;2&#xff09;关闭禁用防火墙和selinux &#xff08;3&#xff09;同步阿里云服务器时间&#xff08;达到集群之间时间同步&#xff09; &…

html+CSS+js部分基础运用20

根据下方页面效果如图1所示&#xff0c;编写程序&#xff0c;代码放入图片下方表格内 图1.效果图 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" conte…

LabVIEW调用DLL时需注意的问题

在LabVIEW中调用DLL&#xff08;动态链接库&#xff09;是实现与外部代码集成的一种强大方式&#xff0c;但也存在一些常见的陷阱和复杂性。本文将从参数传递、数据类型匹配、内存管理、线程安全、调试和错误处理等多个角度详细介绍LabVIEW调用DLL时需要注意的问题&#xff0c;…

UE5实战篇二(对话系统1):导语

实现一款商业游戏中使用的对话系统插件。 虚幻商店链接&#xff1a; https://www.unrealengine.com/marketplace/zh-CN/product/0b84eaa9343543f58138bc4956a2fa8f 1. 内容可配置 2. 多分支对话、旁白对话、对话序列动画、文字显示及各种特效 3. 可配置文字、音效、呈现位…

UML 统一建模语言简介

UML&#xff08;统一建模语言&#xff0c;Unified Modeling Language&#xff09;是一种标准化的建模语言&#xff0c;广泛用于软件工程中以可视化、描述、构建和记录系统的结构和行为。UML 提供了多种图表&#xff0c;用于不同的建模需求。以下是 UML 的主要使用方法和一些常见…

邻接矩阵深度优先遍历

深度优先遍历&#xff0c;就是一条路&#xff0c;走到底&#xff0c;然后再走下一个岔路。 下面代码就主要使用递归来进行&#xff0c;当然也可以借助栈来实现。 private void traverse(char v, boolean[] visited) {int index _getIndexOfV(v);//获取v顶点在vertexS字符数组…

【Spring Boot】过滤敏感词的两种实现

文章目录 项目场景前置知识前缀树 实现方式解决方案一&#xff1a;读取敏感词文件生成前缀树构建敏感词过滤器1. 导入敏感词文件 src/main/resources/sensitive_words.txt2. 构建敏感词过滤器 SensitiveFilter3. 测试与使用 解决方案二&#xff1a;使用第三方插件 houbb/sensit…

Prisma数据库ORM框架学习

初始化项目 中文网站 点击快速开始,点击创建sql项目,后面一步一步往后走 这个博主也挺全的,推荐下 可以看这个页面初始化项目跟我下面是一样的,这里用得是ts,我下面是js,不需要额外的配置了 1.vscode打开一个空文件夹 2.npm init -y 初始化package.json 3.安装相关依赖 …