Vim操作指令全解析
Vim是我们在Linux日常工作中不可或缺的文本编辑器。它强大的功能和高效的编辑方式可以极大提升工作效率。本文将全面解析Vim的各种操作指令,从基础操作到高级技巧。
一、Vim模式解析
Vim是一个模式化编辑器,理解不同模式是掌握Vim的关键:
- 普通模式(Normal mode) :默认模式,用于导航和操作文本
- 插入模式(Insert mode) :用于输入文本(按
i进入) - 可视模式(Visual mode) :用于选择文本(按
v进入) - 命令行模式(Command-line mode) :执行命令(按
:进入)
二、基础移动指令
1. 字符级移动
| 指令 | 功能 |
|---|---|
h | 左移一个字符 |
j | 下移一行 |
k | 上移一行 |
l | 右移一个字符 |
2. 单词级移动
| 指令 | 功能 |
|---|---|
w | 移动到下一个单词开头 |
b | 移动到上一个单词开头 |
e | 移动到当前单词末尾 |
W | 移动到下一个空白分隔词开头 |
B | 移动到上一个空白分隔词开头 |
3. 行级移动
| 指令 | 功能 |
|---|---|
0 | 移动到行首 |
^ | 移动到行首第一个非空白字符 |
$ | 移动到行尾 |
gg | 移动到文件第一行 |
G | 移动到文件最后一行 |
:[n] | 跳转到第n行(如:10) |
三、编辑操作指令
1. 基本编辑
| 指令 | 功能 |
|---|---|
i | 在光标前插入 |
a | 在光标后插入 |
I | 在行首插入 |
A | 在行尾插入 |
o | 在当前行下方新建一行 |
O | 在当前行上方新建一行 |
x | 删除当前字符 |
dd | 删除当前行 |
yy | 复制当前行 |
p | 粘贴到光标后 |
P | 粘贴到光标前 |
u | 撤销上一步操作 |
Ctrl+r | 重做 |
2. 高级编辑
| 指令 | 功能 |
|---|---|
cw | 修改从光标到单词结尾 |
ci" | 修改引号内的内容 |
ct[char] | 修改直到指定字符前的内容 |
>> | 向右缩进当前行 |
<< | 向左缩进当前行 |
guu | 当前行转为小写 |
gUU | 当前行转为大写 |
四、搜索与替换
1. 搜索
| 指令 | 功能 |
|---|---|
/pattern | 向前搜索pattern |
?pattern | 向后搜索pattern |
n | 跳转到下一个匹配项 |
N | 跳转到上一个匹配项 |
* | 搜索当前光标下的单词 |
2. 替换
| 指令 | 功能 |
|---|---|
:s/old/new | 替换当前行第一个old为new |
:s/old/new/g | 替换当前行所有old为new |
:%s/old/new/g | 替换全文所有old为new |
:%s/old/new/gc | 替换全文所有old为new(需确认) |
五、窗口与分屏操作
1. 窗口分割
| 指令 | 功能 |
|---|---|
:sp [file] | 水平分割窗口(可指定文件) |
:vsp [file] | 垂直分割窗口(可指定文件) |
Ctrl+w w | 在窗口间循环切换 |
Ctrl+w h/j/k/l | 切换到左/下/上/右窗口 |
Ctrl+w c | 关闭当前窗口 |
2. 标签页操作
| 指令 | 功能 |
|---|---|
:tabnew | 新建标签页 |
gt | 切换到下一个标签页 |
gT | 切换到上一个标签页 |
:tabm [n] | 移动当前标签页到第n位置 |
六、寄存器与宏
1. 寄存器使用
Vim有多个寄存器用于存储文本:
| 指令 | 功能 |
|---|---|
"ayy | 复制当前行到寄存器a |
"ap | 粘贴寄存器a的内容 |
"+y | 复制到系统剪贴板 |
"+p | 从系统剪贴板粘贴 |
2. 宏录制
| 指令 | 功能 |
|---|---|
qa | 开始录制宏到寄存器a |
q | 停止录制 |
@a | 执行寄存器a中的宏 |
@@ | 重复执行上一次执行的宏 |
七、高级技巧
1. 文本对象操作
Vim的强大之处在于可以操作文本对象:
| 指令 | 功能 |
|---|---|
diw | 删除当前单词 |
daw | 删除当前单词及空格 |
ci( | 修改括号内的内容 |
yit | 复制XML/HTML标签内的内容 |
2. 批量操作
| 指令 | 功能 |
|---|---|
:g/pattern/d | 删除所有包含pattern的行 |
:v/pattern/d | 删除所有不包含pattern的行 |
:10,20s/^/#/ | 在10-20行行首添加#注释 |
3. 外部命令集成
| 指令 | 功能 |
|---|---|
:!command | 执行shell命令 |
:r !command | 插入命令输出到当前光标位置 |
:w !sudo tee % | 保存只读文件(需要sudo权限) |
八、Vim配置技巧
在~/.vimrc中添加以下常用配置:
" 显示行号
set number" 语法高亮
syntax on" 自动缩进
set autoindent" 显示命令
set showcmd" 搜索时忽略大小写
set ignorecase" 高亮搜索
set hlsearch" 设置Tab为4个空格
set tabstop=4
set shiftwidth=4
set expandtab" 启用鼠标支持
set mouse=a
九、实用插件推荐
- Vundle:插件管理器
- NERDTree:文件浏览器
- CtrlP:快速文件查找
- vim-airline:状态栏美化
- vim-fugitive:Git集成
- YouCompleteMe:代码补全
十、学习资源
- 内置教程:终端输入
vimtutor - 帮助系统:在Vim中输入
:help - 在线资源:
- Vim官方文档:https://www.vim.org/docs.php
- Vim Adventures:https://vim-adventures.com/
- Open Vim:https://www.openvim.com/
结语
Vim的学习曲线虽然陡峭,但一旦掌握,它将为您带来前所未有的编辑效率。建议从基础指令开始,逐步掌握更高级的功能。记住,Vim的精髓在于"编辑思考",而不是单纯的按键记忆。
相关文章:
Vim操作指令全解析
Vim是我们在Linux日常工作中不可或缺的文本编辑器。它强大的功能和高效的编辑方式可以极大提升工作效率。本文将全面解析Vim的各种操作指令,从基础操作到高级技巧。 一、Vim模式解析 Vim是一个模式化编辑器,理解不同模式是掌握Vim的关键: …...
《K230 从熟悉到...》识别机器码(AprilTag)
《K230 从熟悉到...》识别机器码(aprirltag) tag id 《庐山派 K230 从熟悉到...》 识别机器码(AprilTag) AprilTag是一种基于二维码的视觉标记系统,最早是由麻省理工学院(MIT)在2008年开发的。A…...
VMware ESXi:企业级虚拟化平台详解
VMware ESXi:企业级虚拟化平台详解 目录 什么是VMware ESXi? ESXi的发展历史 ESXi的核心特性 3.1 裸机架构(Type-1 Hypervisor) 3.2 轻量化与高性能 3.3 集中管理(vCenter集成) ESXi的架构与工作原理…...
使用 PyTorch 的 `optim.lr_scheduler.CosineAnnealingLR` 学习率调度器
使用 PyTorch 的 optim.lr_scheduler.CosineAnnealingLR 学习率调度器 在深度学习中,学习率(Learning Rate, LR)是影响模型训练效果的一个关键超参数。一个合适的学习率调度策略可以帮助模型更快地收敛,同时避免陷入局部最优或振荡。PyTorch 提供了多种学习率调度器,其中…...
栈和队列的概念
1.栈的概念 只允许在固定的一端进行插入和删除,进行数据的插入和数据的删除操作的一端数栈顶,另一端称为栈底。 栈中数据元素遵循后进先出LIFO (Last In First Out) 压栈:栈的插入。 出栈:栈的删除。出入数据在栈顶。 那么下面…...
常用的元素操作API
click 触发当前元素的点击事件 clear() 清空内容 sendKeys(...) 往文本框一类元素中写入内容 getTagName() 获取元素的的标签名 getAttribute(属性名) 根据属性名获取元素属性值 getText() 获取当前元素的文本值 isDisplayed() 查看元素是否显示 get(String url) 访…...
红日靶场一实操笔记
一,网络拓扑图 二,信息搜集 1.kali机地址:192.168.50.129 2.探测靶机 注:需要win7开启c盘里面的phpstudy的服务。 nmap -sV -Pn 192.168.50.128 或者扫 nmap -PO 192.168.50.0/24 可以看出来win7(ip为192.168.50.128)的靶机开…...
SpringBoot集成Redis 灵活使用 TypedTuple 和 DefaultTypedTuple 实现 Redis ZSet 的复杂操作
以下是 Spring Boot 集成 Redis 中 TypedTuple 和 DefaultTypedTuple 的详细使用说明,包含代码示例和场景说明: 1. 什么是 TypedTuple 和 DefaultTypedTuple? TypedTuple<T> 接口: 定义了 Redis 中有序集合(ZSet…...
7-4 BCD解密
BCD数是用一个字节来表达两位十进制的数,每四个比特表示一位。所以如果一个BCD数的十六进制是0x12,它表达的就是十进制的12。但是小明没学过BCD,把所有的BCD数都当作二进制数转换成十进制输出了。于是BCD的0x12被输出成了十进制的18了&#x…...
Golang改进后的任务调度系统分析
以下是整合了所有改进点的完整代码实现: package mainimport ("bytes""context""fmt""io""log""net/http""sync""time""github.com/go-redis/redis/v8""github.com/robfig/…...
【目标检测】【深度学习】【Pytorch版本】YOLOV2模型算法详解
【目标检测】【深度学习】【Pytorch版本】YOLOV2模型算法详解 文章目录 【目标检测】【深度学习】【Pytorch版本】YOLOV2模型算法详解前言YOLOV2的模型结构YOLOV2模型的基本执行流程YOLOV2模型的网络参数YOLOV2模型的训练方式 YOLOV2的核心思想前向传播阶段反向传播阶段 总结 前…...
NineData云原生智能数据管理平台新功能发布|2025年3月版
本月发布 15 项更新,其中重点发布 3 项、功能优化 11 项、性能优化 1 项。 重点发布 基础服务 - MFA 多因子认证 新增 MFA 多因子认证,提升账号安全性。系统管理员开启后,所有组织成员需绑定认证器,登录时需输入动态验证码。 数…...
破局与赋能:信息系统战略规划方法论
信息系统战略规划是将组织的战略目标和发展规划转化为信息系统的战略目标和发展规划的过程,常见的方法有以下几种: 一、企业系统规划法(BSP) 1.基本概念:通过全面调查,分析企业信息需求,确定信…...
GLSL(OpenGL 着色器语言)基础语法
GLSL(OpenGL 着色器语言)基础语法 GLSL(OpenGL Shading Language)是 OpenGL 计算着色器的语言,语法类似于 C 语言,但提供了针对 GPU 的特殊功能,如向量运算和矩阵运算。 着色器的开头总是要声明…...
Redis基础知识-3
RedisTemplate对多种数据结构的操作 1. String类型 示例代码: // 保存数据 redisTemplate.opsForValue().set("user:1001", "John Doe"); // 设置键值对,无过期时间 redisTemplate.opsForValue().set("user:1002", &qu…...
Git Rebase 操作中丢失提交的恢复方法
背景介绍 在团队协作中,使用 Git 进行版本控制是常见实践。然而,有时在执行 git rebase 或者其他操作后,我们可能会发现自己的提交记录"消失"了,这往往让开发者感到恐慌。本文将介绍几种在 rebase 后恢复丢失提交的方法。 问题描述 当我们执行以下操作时,可能…...
【diffusers 进阶(十五)】dataset 工具,Parquet和Arrow 数据文件格式,load dataset 方法
系列文章目录 【diffusers 极速入门(一)】pipeline 实际调用的是什么? call 方法!【diffusers 极速入门(二)】如何得到扩散去噪的中间结果?Pipeline callbacks 管道回调函数【diffusers极速入门࿰…...
unity各个面板说明
游戏开发,unity各个面板说明 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有:学习and理解的关联性,希望对您有用~ unity简介-unity基础…...
游戏引擎学习第199天
回顾并发现我们可能破坏了某些东西 目前,我们的调试 UI 运行得相对顺利,可以创建可修改的调试变量,也可以插入分析器(profiler)等特殊视图组件,并进行一些交互操作。然而,在上一次结束时&#…...
Linux红帽:RHCSA认证知识讲解(十)使用 tar创建归档和压缩文件
Linux红帽:RHCSA认证知识讲解(十)使用 tar创建归档和压缩文件 前言一、归档与压缩的基本概念1.1 归档与压缩的区别 二、使用tar创建归档文件2.1 tar命令格式2.2 示例操作 三、使用tar进行压缩3.2 命令格式3.3 示例操作 前言 在红帽 Linux 系…...
端到端机器学习流水线(MLflow跟踪实验)
目录 端到端机器学习流水线(MLflow跟踪实验)1. 引言2. 项目背景与意义2.1 端到端机器学习流水线的重要性2.2 MLflow的作用2.3 工业级数据处理需求3. 数据集生成与介绍3.1 数据集构成3.2 数据生成方法4. 机器学习流水线与MLflow跟踪4.1 端到端机器学习流水线4.2 MLflow跟踪实验…...
相平面案例分析爱情故事
动态系统的分析可以分为三个步骤:第一步描述系统,通过语言来描述系统的特性,第一步描述系统,即通过语言来描述系统的特性;第二步数学分析,即使用数学工具对系统进行量化解析;第三步结果与讨论&a…...
《2024年全球DDoS攻击态势分析》
从攻击态势来看,2024年DDoS攻击频次继续呈增长趋势,2024年同步增加1.3倍;超大规模攻击激增,超800Gbps同比增长3.1倍,累计高达771次,且互联网史上最大带宽和最大包速率攻击均被刷新;瞬时泛洪攻击…...
RTC实时时钟M41T11M6F国产替代FRTC4111S
由NYFEA徕飞公司制造的FRTC4111S是一种低功耗的串行实时时钟(RTC),国产直接替代ST的M41T11M6F,其具有56字节的NVRAM,32.768 kHz振荡器(由外部晶体控制)和RAM的前8字节用于时钟/日历功能并以二进制编码十进制(BCD)格式配置。地址和数据通过两行双向总线串…...
Uni-app PDF Annotation plugin library online API examples
This article introduces the online version of the ElasticPDF API tutorial for the PDF annotation plug-in library in Uni-app projects. The API includes ① Export edited PDF data; ② Export annotations json data; ③ Reload old annotations; ④ Change files; ⑤…...
SpringKafka消息发布:KafkaTemplate与事务支持
文章目录 引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优化总结 引言 在现代分布式系统架构中,Apache Kafka作为高吞吐量的消息系统,被广泛应用于事件驱动应用开发。Spring Kafka为Java开发者提供了与Kafka交互…...
进行性核上性麻痹护理指南,助患者安稳生活
生活细致照料 安全保障:进行性核上性麻痹患者易出现平衡障碍、步态不稳,居家环境需格外留意安全。移除地面障碍物,保持通道畅通,在卫生间、走廊安装扶手,防止患者摔倒受伤。 饮食协助:患者常伴有吞咽困难&…...
提取嘉立创3D封装
嘉立创上元器件基本都有3D封装,当用AD或其他软件画PCB时,需要用到的3D封装可以从嘉立创EDA中提取。 首先新建工程,然后放置要提取3D封装的器件 导出-》3D文件 因为导出的文件中包含器件的3D封装和PCB板,需要把PCB板删除才能使用…...
工作记录 2017-03-24
工作记录 2017-03-24 序号 工作 相关人员 1 修改了邮件上的问题。 更新RD服务器。 郝 更新的问题 1、修改了New User时 init的保存。 2、文件的查询加了ID。 3、加了 patient insurance secondary 4、修改了payment detail的处理。 识别引擎监控 Ps (iCDA LOG :剔除…...
chromium魔改——修改 navigator.webdriver 检测
chromium源码官网 https://source.chromium.org/chromium/chromium/src 说下修改的chromium源码思路: 首先在修改源码过检测之前,我们要知道它是怎么检测的,找到他通过哪个JS的API来做的检测,只有知道了如何检测,我们…...
