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

vi编辑器模式切换与高效操作指南

1. vi编辑器入门为什么它值得学习第一次接触vi编辑器的人可能会觉得它很反人类——没有图形界面、操作全靠键盘命令、连最基本的文本输入都要先切换模式。但正是这种看似落后的设计让vi在Linux/Unix系统上存活了四十多年成为程序员和系统管理员最爱的文本编辑器之一。我刚开始用vi时也踩过不少坑。记得有次紧急修改服务器配置手忙脚乱按了半天键盘结果不小心把文件改乱了还保存不了最后只能强制退出重来。后来系统管理员告诉我vi就像骑自行车开始会摔几次但一旦掌握就再也忘不掉。现在我用vi处理文本的速度比用鼠标操作图形编辑器快至少三倍。vi的核心优势在于全键盘操作。双手不用离开主键盘区就能完成所有编辑任务这对需要频繁修改代码的开发者来说简直是生产力神器。比如在调试Python脚本时我可以快速跳转到第50行修改参数搜索所有函数调用批量替换变量名整个过程行云流水。2. 理解vi的三种工作模式2.1 一般指令模式导航与基础操作刚打开vi时默认进入的就是一般指令模式Normal mode。这个模式下所有按键都变成命令比如按j不是输入字母而是让光标下移一行。我建议新手先重点掌握这些核心操作光标移动用h(左)、j(下)、k(上)、l(右)替代方向键习惯后效率倍增。组合数字能快速定位比如10j向下跳10行文本删除x删除单个字符dd删除整行d$删除到行尾。我常用dt)删除到右括号位置复制粘贴yy复制当前行p粘贴到下一行。配合v进入可视模式能精确选择文本块提示所有编辑操作都能用u撤销这个救命功能我至少用过几百次2.2 编辑模式实际内容输入在一般指令模式按i/a/o等键会进入编辑模式Insert mode这时键盘输入会变成实际文本。不同进入方式有细微差别i在光标前插入最常用a在光标后插入比如修改字符串时特别方便o在当前行下方新建空行写代码时快速插入新逻辑我有个习惯是进入编辑模式后立即按Esc返回一般模式确认自己没按错键。这个肌肉记忆帮我避免过很多误操作。2.3 命令行模式高级功能入口在一般指令模式按:进入命令行模式Command-line mode这里可以执行文件保存、搜索替换等操作。几个必知命令:wq # 保存并退出记忆技巧write quit :q! # 强制退出不保存紧急逃生通道 /error # 搜索文档中的error调试时超有用3. 模式切换的肌肉记忆训练vi最让新手头疼的就是模式切换。我的训练方法是每天用vi写十分钟日记强制自己只用键盘操作。两周后就形成了条件反射按i进入编辑模式输入文字按Esc返回一般模式移动光标发现错字按u撤销用dd删除整句重写最后:wq保存退出常见问题排查表现象原因解决方案按键盘没反应处于一般模式按i/a/o进入编辑模式输入变成命令忘记按Esc连按两次Esc确保返回一般模式无法保存文件权限不足用sudo vi或:w !sudo tee %4. 高效编辑的进阶技巧4.1 移动光标的黑科技除了基础的h/j/k/l这些导航命令能让你飞起来gg/G瞬间跳转到文件头/尾比滚动条快10倍Ctrld/u向下/上翻半页浏览长文档神器f字符跳转到当前行下一个指定字符比如f找引号%在配对的括号间跳转写if/else时超实用4.2 文本操作的组合技vi最强大的地方在于命令组合。比如d2w删除后面2个单词d表示删除2w移动两个单词ci修改引号内内容c表示修改i选中引号间文本G从当前行缩进到文件末尾4.3 搜索替换的工程级用法在命令行模式下替换命令支持正则表达式:%s/old/new/g # 全局替换慎用 :%s/\d/NUM/gc # 把所有数字替换为NUM且需确认 :10,20s/#.*// # 删除10-20行的注释5. 实战场景技巧合集5.1 调试日志分析当查看服务器日志时我常用这个流程/ERROR跳转到第一个错误n查找下一个错误:set nu显示行号:50,100g/pattern/p打印50-100行匹配内容5.2 代码批量修改重构代码时这些命令特别给力:v/regex/d删除所有不匹配的行:norm q执行录制在q寄存器中的宏:g/^class/norm 给所有类定义增加缩进5.3 配置文件编辑修改nginx配置这类结构化文本时/{快速定位到server块ci{重写整个块内容:wq保存时自动检查语法6. 个性化配置提升体验在~/.vimrc中添加这些配置能让vi更顺手set number 显示行号 syntax on 语法高亮 set incsearch 实时搜索反馈 map F2 :wCR F2快速保存我还会用alias vivim -c set mousea启用鼠标支持在复杂定位时偶尔用鼠标辅助。不过核心操作还是建议坚持用键盘这才是vi的精髓。

相关文章:

vi编辑器模式切换与高效操作指南

1. vi编辑器入门:为什么它值得学习 第一次接触vi编辑器的人可能会觉得它很反人类——没有图形界面、操作全靠键盘命令、连最基本的文本输入都要先切换模式。但正是这种看似"落后"的设计,让vi在Linux/Unix系统上存活了四十多年,成为…...

AXI vs AHB:从5个关键差异点看为什么现代SoC都选择AXI协议

AXI vs AHB:现代SoC设计中的协议选择与技术演进 在芯片设计领域,总线协议的选择往往决定了整个系统的性能上限。十年前,AHB(Advanced High-performance Bus)还是大多数SoC设计的主流选择,而今天&#xff0c…...

高效计算数据分析中的累计和

在数据分析和处理中,经常需要计算一些累计值,比如总扫描量、最近五天的扫描量以及某月至今的扫描量。面对日益增长的数据量,传统的每天全量计算方法逐渐显得效率低下。今天,我们将探讨如何使用PySpark的窗口函数来高效地处理这些计算需求。 背景介绍 假设我们有一个保险公…...

苍穹外卖技术解析:Day10-12来单提醒功能失效排查与修复

1. 来单提醒功能失效现象描述 最近在测试苍穹外卖系统时,发现一个严重影响用户体验的问题:当有新订单进来时,系统既没有弹出提示窗口,也没有语音播报提醒。这个问题出现在Day10-12版本的测试中,直接导致商家可能错过及…...

从祖冲之算法到LTE安全:手把手解析3GPP EEA3/EIA3的C语言实现与测试

从祖冲之算法到LTE安全:手把手解析3GPP EEA3/EIA3的C语言实现与测试 在移动通信领域,数据安全始终是核心议题。当我们使用4G LTE网络进行视频通话、移动支付或传输商业文件时,背后有两道看不见的防线在默默守护——EEA3加密算法和EIA3完整性保…...

FDTD进阶实战之Lumerical脚本数据操控(七):从获取到洞察的完整工作流

1. 从仿真数据到物理洞察的完整工作流 做光子晶体器件仿真最头疼的是什么?不是设置参数,不是等待计算,而是仿真完成后面对那一堆数据却不知道如何下手。我见过太多研究生盯着Lumerical的监视器数据发愣,明明仿真跑完了&#xff0c…...

5个关键步骤让Flash内容在现代系统中重新焕发生机

5个关键步骤让Flash内容在现代系统中重新焕发生机 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser CefFlashBrowser作为一款创新的Flash浏览器解决方案,完美解决了Flash技术退役…...

Python30_线程详解

Python30_线程详解 文章目录Python30_线程详解[toc]一、进程和线程1. GIL锁2. 线程开发3. 线程安全4. 线程锁5. 死锁6. 线程池7. 线程和进程对比7.1 关系对比7.2 区别对比7.3 优缺点对比一、进程和线程 先来了解一下进程和线程 类比: 一个工厂,至少有…...

别再让内存拖后腿:图解PCIe No Snoop与Intel DDIO如何为你的高速网卡加速

突破内存瓶颈:PCIe No Snoop与Intel DDIO技术在高性能网络中的实战指南 当100GbE网卡的实际吞吐量始终无法突破60%利用率时,大多数工程师的第一反应往往是检查网卡配置或驱动版本。但真正的问题可能隐藏在CPU与内存之间那条看不见的数据高速公路上——传…...

开发者心理健康防御系统构建:软件测试从业者的专业防线

在数字化转型的洪流中,软件测试工程师作为产品质量的终极守门人,长期处于一个“高压-高责任-低可见性”的独特困境。技术迭代的飞速步伐、需求的频繁变更、线上事故的归责压力,交织成一张无形却沉重的网,使测试从业者成为心理耗损…...

Python29_并发编程

Python29_并发编程 文章目录Python29_并发编程[toc]基本概念1 并发 vs 并行2 Python 的并发模型多线程编程1 基本使用2 线程同步3 线程间通信多进程编程1 基本使用2 进程池3 进程间通信异步IO(asyncio)1 基本概念2 基本使用3 高级特性并发编程选择指南实际应用示例1 并发下载器…...

开源项目管理软件OpenProject:团队协作的终极免费解决方案

开源项目管理软件OpenProject:团队协作的终极免费解决方案 【免费下载链接】openproject OpenProject is the leading open source project management software. 项目地址: https://gitcode.com/GitHub_Trending/op/openproject 还在为团队协作效率低下而烦…...

LinkSwift:八大网盘直链下载助手,告别限速烦恼的终极解决方案

LinkSwift:八大网盘直链下载助手,告别限速烦恼的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中…...

AI_产品经理|一文读懂大模型到底是怎么工作的

Part 1|大模型为什么给人一种"无所不知"的错觉 很多人第一次用 ChatGPT 或 Claude 时的本能反应是:它怎么什么都知道? 答案其实没那么玄乎。 大模型和搜索引擎一样,干了同一件苦力活:看过了互联网上几乎所有…...

告别数据孤岛!知识图谱:驱动企业智能决策的“大脑”引擎

专注于 知识图谱构建与应用开发,提供一站式定制化服务,帮助企业和科研机构高效管理知识资源、挖掘隐性关系、实现智能决策。服务内容包括: 知识图谱构建:从数据采集、实体抽取、关系识别到图谱建模,全流程专业处理&am…...

2026最新突破,Transformer架构升级、GLM-5深度解析,效率与成本平衡大揭秘!

引言 2026年,大模型技术迎来了前所未有的发展浪潮。从 GLM-5 到最新的 Transformer 变体,技术边界不断被突破。本文将深入分析当前大模型领域的关键技术进展。 一、Transformer 架构的演进 1.1 位置编码的新突破 传统 Transformer 使用固定的位置编码&am…...

微软借助环境感知服务网络简化 AKS 服务网格管理,开启新功能指南来了!

微软借助环境感知服务网络简化 AKS 服务网格扩展与管理微软借助基于环境感知(ambient)的服务网络,简化了 Azure Kubernetes 服务(AKS)的服务网格扩展和管理。以下是如何开启这一功能。如果你正在使用 Kubernetes&#…...

RTX3050笔记本跑TensorFlow-GPU?保姆级避坑指南(Win11 + CUDA 11.5 + cuDNN 8.3.3)

RTX3050笔记本TensorFlow-GPU实战:Win11环境下的精准配置与性能调优 1. 笔记本GPU环境配置的特殊挑战 RTX3050笔记本在深度学习应用中面临着一系列独特挑战。与台式机不同,笔记本的集成显卡设计、功耗限制和散热问题常常成为配置过程中的隐形杀手。许多用…...

8大主流网盘直链下载工具LinkSwift:架构解析与技术实现深度剖析

8大主流网盘直链下载工具LinkSwift:架构解析与技术实现深度剖析 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云…...

Source Han Serif CN开源中文字体:企业级字体解决方案的技术实现与应用实践

Source Han Serif CN开源中文字体:企业级字体解决方案的技术实现与应用实践 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 在数字内容创作和商业设计领域,中文…...

Python实战:基于Hessian矩阵的Steger激光条纹中心提取算法

1. 激光条纹中心提取的工业应用场景 在工业质检领域,激光三角测量技术被广泛应用于物体表面形貌检测。当激光器投射到物体表面时,会形成一条明亮的激光条纹。这条条纹的形变程度反映了物体表面的高度变化,而要精确计算这些形变,首…...

NLP 注意力机制:从Transformer到GPT

NLP 注意力机制:从Transformer到GPT 1. 引言 注意力机制(Attention Mechanism)已成为现代自然语言处理(NLP)的核心技术,从Transformer架构的提出到GPT系列模型的演进,注意力机制的应用和改进推动…...

RabbitMQ 核心角色:什么是生产者和消费者?全流程图解+实战详解

RabbitMQ 核心角色:什么是生产者和消费者?全流程图解实战详解前言一、核心概念定义:什么是 RabbitMQ 生产者和消费者?1.1 生产者(Producer):定义与作用1.2 消费者(Consumer&#xff…...

PyTorch 分布式训练:DDP vs FSDP

PyTorch 分布式训练:DDP vs FSDP 核心结论 DDP (DistributedDataParallel):基于数据并行的分布式训练方法,适用于中小规模模型FSDP (FullyShardedDataParallel):基于模型分片的分布式训练方法,适用于超大规模模型性能对…...

RabbitMQ 实战指南:如何声明队列?队列声明必要参数与完整用法详解

RabbitMQ 实战指南:如何声明队列?队列声明必要参数与完整用法详解前言一、队列声明认知:什么是队列声明?为什么要声明?1.1 定义1.2 核心作用1.3 队列声明流程图二、队列声明基础语法:如何声明一个队列&…...

消息中间件实战:RabbitMQ基本架构与核心组件全解析

消息中间件实战:RabbitMQ基本架构与核心组件全解析前言一、RabbitMQ 架构认知:RabbitMQ 基本架构是什么?1.1 架构定义1.2 整体架构流程图1.3 架构核心特点二、RabbitMQ 核心组件:RabbitMQ 包含哪些核心组件?2.1 组件一…...

BUAA编译原理核心考点实战解析:从随堂测试到知识脉络

1. 从零散题目到知识图谱:编译原理学习新视角 第一次翻开编译原理课本时,相信很多同学和我一样,面对词法分析、语法分析、语义分析这些概念一头雾水。更让人头疼的是,随堂测试里的题目看似简单,却总能在细节处挖坑无数…...

实战Windbg:从线上死锁到内存异常的全链路调试指南

1. 初识Windbg:调试利器与线上救火场景 第一次接触Windbg是在一个深夜的线上告警中。当时我们的订单处理服务突然卡死,监控显示线程数暴涨但CPU利用率却很低,典型的死锁特征。由于是生产环境,既不能随意重启服务,又无法…...

从实验室到日常生活:马吕斯定律在LCD屏幕和太阳镜中的神奇应用

偏振光的魔法:马吕斯定律如何塑造现代科技产品 清晨的阳光透过窗帘缝隙洒进房间,你伸手摸到床头的手机,屏幕瞬间亮起——这个再普通不过的动作背后,隐藏着一个200多年前发现的物理定律。当我们戴上太阳镜在户外活动,或…...

Livox Avia面阵激光雷达深度解析:双扫描模式如何重塑行业应用边界

1. Livox Avia面阵激光雷达的核心突破:双扫描模式解析 第一次拿到Livox Avia时,最让我惊讶的是它不到500克的机身里竟藏着两种完全不同的扫描模式。这就像一台相机同时拥有广角镜头和长焦镜头——非重复扫描模式如同广角镜头,能瞬间捕捉70.47…...