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 命令快捷操作
注:本文为过去的 “vim 使用笔记”。 跳转命令 跳转命令 #:向前查找光标当前所在单词,并跳转到该单词的上一个出现位置。*:向后查找光标当前所在单词,并跳转到该单词的下一个出现位置。 行内跳转 0:跳转…...

开源订货系统哪个好 三大订货系统源码推荐
在数字化转型加速的今天,企业对订货系统的需求日益增长。一款优质的订货系统源码不仅能提升供应链效率,还能通过二次开发满足个性化业务需求。这里结合 “标准化、易扩展” 两大核心要求,为您精选三款主流订货系统源码,助您快速搭…...
跟着 Lua 5.1 官方参考文档学习 Lua (11)
文章目录 5.4.1 – PatternsCharacter Class:Pattern Item:Pattern:Captures: string.find (s, pattern [, init [, plain]])例子:string.find 的简单使用 string.match (s, pattern [, init])string.gmatch (s, pattern)string.gsub (s, pattern, repl [, n])例子&…...
使用 MyBatis XML 和 QueryWrapper 实现动态查询
本文档介绍了如何在 MyBatis 中结合 XML 配置和 MyBatis-Plus 的 QueryWrapper 来实现动态查询。 1. XML 中定义基本查询 首先,在 MyBatis XML 文件中定义一个基本的 select 查询: <select id"selectCode" resultType"java.util.Ma…...

视频理解开山之作 “双流网络”
1 论文核心信息 1.1核心问题 任务:如何利用深度学习方法进行视频中的动作识别(Action Recognition)。挑战: 视频包含时空信息,既需要捕捉静态外观特征(Spatial Information),也需要…...
每日一题——搜索二维矩阵
搜索二维矩阵 一、题目背景二、题目描述示例 1:示例 2:约束条件: 三、解题思路分析1. **错误思路回顾**2. **Z字形查找算法**算法步骤: 3. **算法优势** 四、代码实现代码说明: 五、测试用例测试用例 1:测试…...

PPT 小黑第21套
对应大猫22 动作按钮 “转到首页” 编号从1开始显示,点设计 -幻灯片大小 -修改幻灯片编号起始值为0(那么第二张幻灯片页码为1)...
大模型day01自然语言+大模型+环境
[TOC]大模型day01 自然语言处理 汉字的词是连着的,所以需要一个汉语处理模块,把词语、成语自动加空格隔开。 知识图谱构建——>从大语言文本挖掘出来 自然语言处理:翻译、智能语音 自然语言处理:理解一句话意思,…...

VSTO(C#)Excel开发3:Range对象 处理列宽和行高
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...

【2025】Electron + React 架构筑基——从零到一的跨平台开发
引言 源代码仓库: Github仓库【electron_git】 你是否厌倦了在命令行中反复输入git status,却依然无法直观看到文件变化? 是否羡慕VS Code的丝滑Git集成,却苦恼于无法定制自己的专属工具? 本专栏将为你打开一扇新的…...
AWS 如何导入内部SSL 证书
SSL 证书的很重要的功能就是 HTTP- > HTTPS, 下面就说明一下怎么导入ssl 证书,然后绑定证书到ALB. 以下示例说明如何使用 AWS Management Console 导入证书。 从以下位置打开 ACM 控制台:https://console.aws.amazon.com/acm/home。如果您是首次使用 ACM,请查找 AWS Cer…...

清华北大推出的 DeepSeek 教程(附 PDF 下载链接)
清华和北大分别都有关于DeepSeek的分享文档,内容非常全面,从原理和具体的应用,大家可以认真看看。 北大 DeepSeek 系列 1:提示词工程和落地场景.pdf 北大 DeepSeek 系列 2:DeepSeek 与 AIGC 应用.pdf 清华 Deep…...
【空地协同技术教程:概念与技术手段解析】
空地协同技术教程:概念与技术手段解析 一、空地协同的概念与核心价值 定义 空地协同(Air-Ground Collaboration)是指通过无人机(UAV)与无人车(UGV)等异构平台的跨域协作,利用各自的…...

【2025小黑课堂】计算机二级WPS精选系列20G内容(可下载:真题+预测卷+软件+选择题)
2025年3月全国计算机等级考试即将于3月29日至31日举行。为了帮助广大考生高效备考,小编特意收集并整理了最新版(备考2025年3月)的小黑课堂计算机二级WPS 电脑题库软件,助力考生在考试中游刃有余,轻松通关! …...

蓝桥杯备赛:炮弹
题目解析 这道题目是一道模拟加调和级数,难的就是调和级数,模拟过程比较简单。 做法 这道题目的难点在于我们在玩这个跳的过程,可能出现来回跳的情况,那么为了解决这种情况,我们采取的方法是设定其的上限步数。那么…...
kotlin高级用法总结
Kotlin 是一门功能强大且灵活的编程语言,除了基础语法外,它还提供了许多高级特性,可以帮助你编写更简洁、高效和可维护的代码。以下是 Kotlin 的一些高级用法,涵盖了协程、扩展函数、属性委托、内联类、反射等内容。 协程&#x…...

transformers - AWQ
本文翻译整理自:https://huggingface.co/docs/transformers/main/en/quantization/awq 文章目录 一、引言二、加载 autoawq 量化的模型三、Fused modules支持的架构不受支持的架构 四、ExLlamaV2五、CPU 一、引言 Activation-aware Weight Quantization (AWQ) 激活…...

mysql下载与安装、关系数据库和表的创建
一、mysql下载: MySQL获取: 官网:www.mysql.com 也可以从Oracle官方进入:https://www.oracle.com/ 下载地址:https://downloads.mysql.com/archives/community/ 选择对应的版本和对应的操作系统ÿ…...
在华为设备上,VRRP与BFD结合使用可以快速检测链路故障并触发主备切换
在华为设备上,VRRP与BFD结合使用可以快速检测链路故障并触发主备切换。以下是VLAN接口下配置VRRP与BFD的步骤: 目录 1. 配置BFD会话 2. 配置VLAN接口 3. 配置VRRP 4. 验证配置 5. 保存配置 1. 配置BFD会话 在两台设备之间配置BFD会话,…...
RK3588开发笔记-fiq_debugger: cpu 0 not responding, reverting to cpu 3问题解决
目录 前言 一、FIQ Debugger介绍 二、rockchip平台配置方法 三、问题分析定位 IRQF_NOBALANCING 的含义 总结 前言 在进行 RK3588 开发的过程中,我们可能会遇到各种棘手的问题。其中,“fiq_debugger: cpu 0 not responding, reverting to cpu 3” 这个错误出现在RK3588的…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...