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

linux | Vim 命令快捷操作

注:本文为过去的 “vim 使用笔记”


跳转命令

跳转命令

  • #:向前查找光标当前所在单词,并跳转到该单词的上一个出现位置。
  • *:向后查找光标当前所在单词,并跳转到该单词的下一个出现位置。

行内跳转

  • 0:跳转到当前行的行首。 [Home]
  • $:跳转到当前行的行尾。 [End]
  • ^:跳转到当前行的第一个非空字符处。
  • g_:跳转到行尾最后一个非空白字符。
  • |n:跳转到当前行的第 n 列(例如:|10 跳转到第 10 列)。

文件内跳转

  • gg:跳转到文件第一行的行首。
  • G:跳转到文件最后一行的行首。
  • G$:跳转到文件最后一行的行尾。 [Ctrl + End]
  • :line-number:n:跳转到指定行号的行(例如::100 跳转到第 100 行)。
  • nG:跳转到文件的第 n 行(例如:20G 跳转到文件的第 20 行)。
  • /{pattern}:跳转到第一个与 {pattern} 匹配的位置。

屏幕跳转

  • H:跳转到屏幕的最上方一行的第一个字符。
  • M:跳转到屏幕的中央那一行的第一个字符。
  • L:跳转到屏幕的最下方一行的第一个字符。
  • Ctrl + b:向上滚动一屏。
  • Ctrl + f:向下滚动一屏。

单词跳转

  • b:跳转到前 1 个单词的开头(例如:5b 向前跳转到第 5 个单词的开头)。
  • e:跳转到当前单词的末尾。
  • w:跳转到下 1 个单词的开头(例如:5w 向后跳转到第 5 个单词的开头)。
  • ge:向前跳转到当前单词的结尾(例如:3ge 向前跳转到第 3 个单词的结尾)。

字符跳转

  • f{char}:跳转到当前行下一个字符 {char} 的位置(例如:fa 跳转到下一个字母 a)。
  • F{char}:跳转到当前行上一个字符 {char} 的位置。
  • h:向左跳转一个字符(例如:10h 向后跳转 10 个字符)。
  • l:向右跳转一个字符(例如:10l 向前跳转 10 个字符)。

行间跳转

  • j:向下跳转一行(例如:5j 向下跳转 5 行)。
  • k:向上跳转一行(例如:5k 向上跳转 5 行)。
  • n<Enter>:光标向下跳转 n 行

删除命令

字符删除

  • x:删除当前光标所在位置的字符,并将光标自动向后跳转一个字符(例如:3x 删除光标后的三个字符,3X 删除光标前的三个字符)。
  • dl:同 x,删除光标所在位置的字符(例如:5dl 删除光标后的 5 个字符)。
  • dh:删除光标所在位置的前一个字符。

行删除

  • dd:删除当前行(例如:5dd 向下删除 5 行,共 6 行)。
  • D:删除从光标当前位置一直到该行的末尾(包括光标所在的字符)。
  • d$:删除至行尾。
  • d0:删除至行首。

单词删除

  • dw:删除光标所在位置到下 1 个单词开头之间的内容(不保留空格,例如:5dw 删除连续的 5 个单词)。
  • de:删除从光标位置到当前单词末尾的内容(不会删除空格)。
  • dex:删除从光标所在位置到当前单词末尾之间的所有字符,包括当前单词末尾的空格。
  • db:删除光标所在单词及其前面的空格。
  • daw:删除光标所在的单词及其后面的空格。
  • diw:删除光标所在的单词,并保留其前后的空格。
  • bdw:删除光标所在位置到前 1 个单词开头之间的内容,并且不保留空格。

范围删除

  • :3,5d:删除从第 3 行到第 5 行。
  • d1G:删除从当前行到第一行之间的文本。
  • dG:删除到文件尾,也就是删除整个文档的后半部分(包括光标所在的字符)。
  • dgg:删除到文件首。
  • dj:删除当前行和下一行(例如:5dj 删除当前行及其下面的 5 行,即向下删除 6 行)。
  • dk:删除当前行和上一行(例如:5dk 删除当前行及其上面的 5 行,即向上删除 6 行)。
  • d2w:删除光标后面的两个单词。
  • dX:删除当前单词前面的空格,但不包括当前单词本身
  • wde:删除从光标位置到下 1 个单词开头的内容,并且保留空格。其中数字可以指定要删除的单词数

其他

  • d{motion}: motion 可以是任何移动光标的命令,例如 dw, d2w, d$ 等.

注意: d 删除的字符存放到 Vim 的剪贴板中,可以使用 p 命令将其粘贴到另一个位置。

复制和粘贴

复制

  • y:复制(默认是复制到"寄存器)。
  • "+y:复制到系统剪贴板(也就是 vim 的 + 寄存器)。
  • yw:复制 1 个单词(例如:y3w 复制 3 个单词)。
  • yy:复制游标所在的那一行(常用)。
  • nyy:n 为数字,复制光标所在的向下 n 行(例如:20yy 则是复制 20 行)。
  • y1G:复制游标所在行到第一行的所有数据。
  • yG:复制游标所在行到最后一行的所有数据。
  • y0:复制光标所在字符到该行行首的所有数据。
  • y$:复制光标所在字符到该行行尾的所有数据。
  • 5bgyw:复制光标所在单词向前 5 个单词
  • 5egyw:复制光标所在单词向后 5 个单词
  • 5b5egyw:复制光标所在单词向前向后 3 个单词

粘贴

  • p:粘贴(默认从"寄存器取出内容粘贴,在光标后)。
  • P:粘贴到光标前。
  • "+p:从系统剪贴板粘贴。
  • 5p:粘贴五份。

插入新行

  • o:在当前行下面插入 1 个新行,并将光标放置到新行的起始位置。
  • O:在当前行上面插入 1 个新行,并将光标放置到新行的起始位置。

插入模式

  • i:在当前光标位置处插入文本。
  • I:在当前行的开头插入文本。
  • a:在当前光标位置后插入文本。
  • A:在当前行的结尾插入文本。
  • o:在当前行的下一行插入文本。
  • O:在当前行的上一行插入文本。

撤销和重做

  • u:撤销,或输入 :undo 命令。
  • Ctrl + r:重做或输入 :redo 命令。

替换和搜索

  • :%s/old/new/g:快速替换文本中所有的匹配项。
  • :%s/old/new/gi:快速替换文本中所有的匹配项,忽略大小写。
  • :%s/[\\u4e00-\\u9fa5]//g:替换所有中文字符。
  • :g/^$/d:删除所有空行。
  • :%s/\\s\\+/ /g:将连续空格替换为单个空格。
  • :g/^\\s*$/d:删除包含空格的空行。
  • :%s/^\\s*\\n//:删除文档中的连续空格,只保留单个空格,并且删除包含空格的空行。

代码块操作

代码块缩进

  • <:代码块左移(减少缩进)。
  • >:代码块右移(增加缩进)。
  • <<:减少选中行的缩进,块状可视模式下使用。
  • >>:增加选中行的缩进,块状可视模式下使用。

代码块排序

  • :sort:按字典顺序排序选中的行。
  • :sort!:按逆字典顺序排序选中的行。
  • :sort n:按数字顺序排序选中的行。

代码块注释

  • I:在当前行的开头插入注释(需要配合可视块模式)。
  • A:在当前行的末尾添加注释(需要配合可视块模式)。
  • :%s/^/# /:在每一行的行首插入 “#” 作为注释符号。

代码块格式化

  • =:重新格式化选中的代码块(自动缩进)。

其他命令

  • nohl:取消高亮。
  • :set whichwrap+=<,>:允许光标在行首和行尾跳转到下一行或上一行。
  • :set nofixeol:禁用文件末尾自动添加新行。
  • :set mouse=a:启用鼠标支持。
  • :set mousemodel=extend:设置鼠标滚动时光标的移动方式为扩展模式
  • :set number 或者 :set nu:显示行号
  • :set nonumber 或者 :set nonu:不显示行号

文件操作

保存并退出

  • :wq:保存文件并退出编辑器。
  • :x:保存文件并退出编辑器,仅当文件自上次保存以来有修改时。
  • :xit:保存文件并退出编辑器,无论文件是否被修改。
  • :ZZ:保存文件并退出编辑器

仅保存

  • :w:保存更改但不退出 Vim。
  • :w!:强制保存更改,忽略某些文件类型插件的警告。

保存到其他文件

  • :w <filename>:将更改保存到指定的文件名中,不退出 Vim。
  • :w! <filename>:强制将更改保存到指定的文件名中,忽略警告。

保存所有打开的文件

  • :wqa:保存所有打开的文件并退出 Vim。

撤销保存

  • :undo:撤销最近的一次保存操作。

设置自动保存

  • :set autowrite:自动保存更改,每次执行命令时自动写入文件。
  • :set noautowrite:取消自动保存。

保存并退出所有打开的标签页

  • :wqa:在有多个标签页的情况下,保存所有更改并退出 Vim。

保存并关闭当前窗口

  • :close:关闭当前窗口
  • :winc:保存当前窗口的更改并关闭窗口,不退出 Vim。

保存并关闭所有窗口

  • :wqa:保存所有更改并关闭所有窗口,退出 Vim。

自定义快捷键

  • :map <C-f> <PageDown>:将 Ctrl+f 映射为 PageDown(向下滚动一页)。
  • :map <C-b> <PageUp>:将 Ctrl+b 映射为 PageUp(向上滚动一页)。
  • :map <C-s> :w<CR>: 将 Ctrl + s 映射为保存。

正则表达式和替换命令

插入特定字符

  • :%s/^/#/:在整个文件中的每一行的行首插入 “#” 字符
  • :1,5s/^/# /:在第 1 行到第 5 行之间的每一行的行首插入 “#” 字符

删除特定字符

  • :%s/^#//:删除整个文件中的每一行的行首的 “#” 字符
  • :1,5s/^# //:删除第 1 行到第 5 行之间的每一行的行首插入的 “#” 字符

插入行首和行尾字符

  • :%s/^/\\/\\/:在每一行的行首插入 “//”
  • :1,5s/^/# /:在第 1 行到第 5 行的行首插入 "# "

删除行首和行尾字符

  • :%s/^\\s\\+//:删除每行行首的空格
  • :%s/\\s\\+$//:删除每行行尾的空格

替换文本

  • :%s/old/new/g:将文件中所有的 “old” 替换为 “new”
  • :%s/old/new/gi:将文件中所有的 “old” 替换为 “new”,忽略大小写
  • :%s/\\n//g:删除所有的换行符
  • :%s/\\r//g:删除所有的回车符
  • :%s/\\t//g:删除所有的制表符

特定范围替换

  • :<起始行号>,<结束行号>s/^/<插入的字符>/:在特定范围的行上执行插入操作
  • :<起始行号>,<结束行号>s/^<要删除的字符>//:在特定范围的行上执行删除操作

未完待续……

相关文章:

linux | Vim 命令快捷操作

注&#xff1a;本文为过去的 “vim 使用笔记”。 跳转命令 跳转命令 #&#xff1a;向前查找光标当前所在单词&#xff0c;并跳转到该单词的上一个出现位置。*&#xff1a;向后查找光标当前所在单词&#xff0c;并跳转到该单词的下一个出现位置。 行内跳转 0&#xff1a;跳转…...

android12 屏幕亮度控制修改为线性变化

由于高版本的亮度调节不是线性变化了&#xff0c;有客户反馈在Android11或者12上使用代码获取亮度不对&#xff0c;比如我们在设置中查看屏幕亮度是80%&#xff0c;读出来的亮度值是100&#xff0c;客户认为亮度值是39%。 获取屏幕亮度 adb shell settings get system screen…...

STM32-USART串口数据包

一&#xff1a;HEX数据包发送 1.为了收发数据包&#xff0c;先定义两个缓存区的数组 &#xff0c;这4个数据只存储发送或者接收的载荷数据&#xff0c;包头和包尾不存 uint8_t Serial_TxPacket[4]; uint8_t Serial_RxPacket[4]; uint8_t Serial_RxFlag;//接收一个数据包就置F…...

轻闪PDF(Windows傲软PDF编辑软件)2.15.2中文安装版

前言 轻闪pdf是个很好用的文件编辑软件&#xff0c;它能让大家编辑文档变得更简单、更快。这个软件特别厉害&#xff0c;能从照片里直接“抓”出文字来&#xff0c;让你打字变得更轻松。而且&#xff0c;它还能把PDF文件变成其他格式的文件&#xff0c;反过来也行。还有啊&…...

Python-07PDF转Word

2025-03-04-PDF转Word DeepSeek等大模型从来都不是简单的写一个静态博客这么肤浅&#xff08;太多博主都只讲这个内容了&#xff09;借助全网大神的奇思妙想&#xff0c;拓展我狭隘的思维边界。 文章目录 2025-03-04-PDF转Word [toc]1-参考网址2-学习要点3-核心逻辑4-核心代码 …...

Arcgis中添加脚本工具箱

文章目录 准备资料1、打开arcmap2、找到目录窗口3、复制粘贴工具箱的路径4、添加或者确认python脚本路径准备资料 (1)工具箱 (2)python脚本 1、打开arcmap 2、找到目录窗口 3、复制粘贴工具箱的路径 4、添加或者确认python脚本路径 脚本上右键属性(注意:脚本内容和路径…...

拥抱健康养生,开启活力生活

在快节奏的现代生活中&#xff0c;健康养生已成为人们关注的焦点&#xff0c;它不仅是对身体的呵护&#xff0c;更是一种积极的生活态度。 合理饮食是健康养生的基石。我们应秉持均衡膳食的理念&#xff0c;谷物、蔬菜、水果、蛋白质类食物一个都不能少。每天保证足够的蔬菜摄入…...

字节跳动AI原生编程工具Trae和百度“三大开发神器”AgentBuilder、AppBuilder、ModelBuilder的区别是?

字节跳动AI编程工具Trae与百度"三大开发神器"&#xff08;AgentBuilder、AppBuilder、ModelBuilder&#xff09;在定位、功能架构和技术路线上存在显著差异&#xff0c;具体区别如下&#xff1a; 一、核心定位差异 Trae&#xff1a;AI原生集成开发环境&#xff08;AI…...

【MySQL】第十二弹---表连接详解:从内连接到外连接

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】【MySQL】 目录 1.表的内连和外连 1.1 内连接 1.2 外连接 1.2.1 左外连接 1.2.1 右外连接 1.3 实战OJ 1.表的内连和外连 表的连接…...

MySQL字段内容加解密使用性能验证

背景&#xff1a; 近期工作中遇到对MySQL表中内容安全要求&#xff0c;需要通过字段内容加密存储的方式来实现。 为真实测试&#xff0c;如有疑问&#xff0c;欢迎解惑。 有多种解决办法&#xff0c;可以通过中间件来实现、数据库层来实现&#xff0c;最终选择了AES对称…...

审批流AntV框架蚂蚁数据可视化X6饼图(附注释)

大家好&#xff0c;这次使用的是AntV的蚂蚁数据可视化X6框架&#xff0c;类似于审批流的场景等&#xff0c;代码如下&#xff1a; X6框架参考网址&#xff1a;https://x6.antv.vision/zh/examples/showcase/practices#bpmn 可以进入该网址&#xff0c;直接复制下方代码进行调试…...

【SpringBoot】深入解析 Maven 的操作与配置

Maven 1.什么是Maven? Maven是一个项目管理工具&#xff0c;通过pom.xml文件的配置获取jar包&#xff0c;而不用手动去添加jar包&#xff1b; 2. 创建一个Maven项目 IDEA本身已经集成了Maven&#xff0c;我们可以直接使用&#xff0c;无需安装 以下截图的idea版本为&#xff…...

搭建一个简单的node服务,模拟后端接口

目录 一、查看是否安装了node和npm 二、创建一个文件夹&#xff0c;用于放你的node服务代码 三、初始化一个package.json 四、安装 Express&#xff08;快速搭建服务的框架&#xff09; 五、创建serve.js 六、运行服务即可 七、测试接口 法一&#xff1a;使用 curl 法…...

【落羽的落羽 C++】C++入门基础:引用,内联,nullptr

文章目录 一、引用1. 引用的概念2. 引用的特点3. 引用的使用4. const引用5. 引用和指针 二、inline内联三、nullptr 一、引用 1. 引用的概念 引用是C中的一个较为重要的概念。它是给已存在变量取的“别名”&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引…...

Android 低功率蓝牙之BluetoothGattCallback回调方法详解

BluetoothGattCallback 是 Android 中用于处理蓝牙低功耗&#xff08;BLE&#xff09;设备通信的核心回调类。它负责处理与 BLE 设备的连接、服务发现、数据读写等操作的结果。以下是对 BluetoothGattCallback 的详细解析&#xff1a; 1. onConnectionStateChange 触发时机&am…...

PHP之字符串拼接

在你有别的编程语言的基础下&#xff0c;你想学习PHP&#xff0c;可能要了解的一些关于字符串拼接的信息。 特别注意方法一&#xff0c;在别的语言中基本都是用拼接的。 方法一&#xff1a;(直接拼接) $x 123; echo "hello" . $x;方法二&#xff1a;(多输出拼接) …...

Python的那些事第四十一篇:简化数据库交互的利器Django ORM

Django ORM:简化数据库交互的利器 摘要 随着互联网技术的飞速发展,Web开发越来越受到重视。Django作为一款流行的Python Web框架,以其高效、安全、可扩展等特点受到了广大开发者的喜爱。其中,Django ORM(对象关系映射)是Django框架的核心组件之一,它为开发者提供了一种…...

通过多线程同时获取H264和H265码流

目录 一.RV1126 VI采集摄像头数据并同时编码H264、H265的大概流程​编辑​编辑 1.1初始化VI模块&#xff1a; 1.2H264、H265的VENC模块初始化&#xff1a; 1.3VI分别绑定H264的VENC层和H265的VENC层&#xff1a; ​​​​​​​1.4开启H264线程采集H264的VENC数据&#xff…...

DeepSeek V3 源码:从入门到放弃!

从入门到放弃 花了几天时间&#xff0c;看懂了DeepSeek V3 源码的逻辑。源码的逻辑是不难的&#xff0c;但为什么模型结构需要这样设计&#xff0c;为什么参数需要这样设置呢&#xff1f;知其然&#xff0c;但不知其所以然。除了模型结构以外&#xff0c;模型的训练数据、训练…...

海量数据融合互通丨TiDB 在安徽省住房公积金监管服务平台的应用实践

导读 安徽省住房公积金监管服务平台通过整合全省 17 家公积金中心的数据&#xff0c;致力于实现数据共享、规范化管理与高效数据分析。为了应对海量数据处理需求&#xff0c;安徽省选择 TiDB 作为底层数据库&#xff0c;利用其分布式架构和 HTAP 能力&#xff0c;实现了快速的…...

Sqlserver安全篇之_手工创建TLS用到的pfx证书文件

Sqlserver官方提供的Windows Powershell脚本 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 # Define parameters $certificateParams {Type "SSLServerAuthentication"Subje…...

Linux12-UDP\TCP

一、UDP 1.特点: 尽最大努力交付,存在丢包的可能 无连接 面向数据报 机制简单,传输效率高 2.应用场景: 1.画面传输 VNC 直播:要求实时性高、允许数据丢失、 二、TCP 1.特点: 面向数据流(流式套接字) 建立连接 安全可靠的传输协议 三次握手:TCP建立连接时,…...

Tailwind CSS 问题:npm error could not determine executable to run

问题与处理策略 问题描述 npx tailwindcss init -p在使用 Tailwind CSS 的前端项目中&#xff0c;执行上述指令&#xff0c;即初始化 Tailwind CSS 时&#xff0c;报如下错误 npm error could not determine executable to run# 报错npm 错误无法确定要运行的可执行文件问题…...

C# 实现鼠标轨迹录制与回放自动化功能(附源码)

在软件自动化测试或者重复性办公任务中&#xff0c;鼠标操作的自动化可以大大减少人工干预&#xff0c;提高工作效率。这里将详细介绍如何使用 C# 实现鼠标轨迹的录制与回放功能&#xff0c;代码结构清晰&#xff0c;具有较强的扩展性。 引用 NuGet 包 在开发这个功能时&…...

【HeadFirst系列之HeadFirst设计模式】第14天之与设计模式相处:真实世界中的设计模式

与设计模式相处&#xff1a;真实世界中的设计模式 设计模式是软件开发中的经典解决方案&#xff0c;它们帮助我们解决常见的设计问题&#xff0c;并提高代码的可维护性和可扩展性。在《Head First设计模式》一书中&#xff0c;作者通过生动的案例和通俗的语言&#xff0c;深入…...

自由学习记录(42)

可能会出现到后面没有教程可以看&#xff0c;走不动&#xff0c;&#xff0c;但还是尝试吧 过程远比想象的要多 那连Live2d的这些脚本怎么控制的都要了解一下 ------------ 文件类型和扩展名 | 编辑手册 | Live2D Manuals & Tutorials 全部导入之后 在这下载SDK Live2D…...

mac安装nvm=>node=>nrm

下载并安装 NVM 运行以下命令下载并安装 NVM&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash 配置环境变量 vim ~/.zshrc 按 i 将如下代码复制进去&#xff0c;controlc &#xff0c;再按 :wq完成编辑 export NVM_DIR…...

excel vlookup的精确查询、模糊查询、反向查询、多列查询

目录 入门 精确查询 模糊查询 反向查询 (搭配 if 函数) 多列查询 (搭配 match 函数) 入门 精确查询 需求: 查找 学生编号是008 所在的班级 操作: 在I2单元格输入公式如下,VLOOKUP(H2,B1:E12,4,FALSE), 得出结果 看一下vlookup 公式每一个参数应该怎么写? 语法: vlookup…...

安装remixd,在VScode创建hardhat

在终端&#xff0c;以管理员身份&#xff0c;cmd 需要科学上网 npm install -g remix-project/remixd 在vscode插件中&#xff0c;安装solidity插件&#xff0c;是暗灰色那款 1.将nodeJs的版本升级至18以上 2.在vscode打开一个新的文件&#xff0c;在终端输入 npx hardhat 3.…...

【Python爬虫】利用代理IP爬取跨境电商AI选品分析

引言 随着DeepSeek的流行&#xff0c;越来越多的用户开始尝试将AI工具融入到日常工作当中&#xff0c;借助AI的强大功能提高工作效率。最近又掀起了一波企业出海的小高潮&#xff0c;那么如果是做跨境电商业务&#xff0c;怎么将AI融入工作流中呢&#xff1f;在做跨境电商的时候…...