Vi/Vim 编辑器详细指南

在这里插入图片描述


Vi/Vim 编辑器详细指南

  • 简介
  • 一、模式详解
    • 1. 命令模式(Normal Mode)
    • 2. 插入模式(Insert Mode)
    • 3. 可视模式(Visual Mode)
    • 4. 命令行模式(Ex Mode)
  • 二、核心操作
    • 1. 保存与退出
    • 2. 导航与移动
    • 3. 编辑与文本操作
    • 4. 搜索与替换
  • 三、高级技巧
    • 1. 多文件与窗口操作
    • 2. 宏录制
    • 3. 寄存器与剪贴板
    • 4. 代码折叠
  • 四、配置与插件
    • 1. 配置文件(~/.vimrc)
    • 2. 插件管理(以 vim-plug 为例
      • 1. 安装 vim-plug:
      • 2. 配置插件(在 `~/.vimrc` 中添加):
      • 3. 安装插件:
  • 五、场景示例
    • 1. 批量注释代码
    • 2. 多文件编辑
    • 3. 快速修复缩进
  • 六、快捷键速查表
  • 七、注意事项
    • 1. 只读文件:
    • 2. 恢复文件:
    • 3. 插件兼容性:
    • 4. 性能优化:


简介

Vi/Vim 是一款功能强大的文本编辑器,以其高效的键盘操作和灵活的配置著称。它支持多模式编辑,适用于从简单文本处理到复杂代码开发的各类场景。本指南将全面解析其核心功能,帮助你掌握从基础到进阶的操作。


一、模式详解

1. 命令模式(Normal Mode)

  • 默认模式:启动 Vim 后自动进入,所有按键被解析为命令。

  • 核心作用:导航、删除、复制、粘贴、搜索等操作。

  • 退出其他模式:按 Esc 键返回此模式。

2. 插入模式(Insert Mode)

  • 进入方式:

    • i:在光标前插入。

    • a:在光标后插入。

    • o / O:在当前行下方/上方新建行并插入。

    • s:删除当前字符并插入。

    • S:删除整行并插入。

  • 退出:按 Esc 返回命令模式。

3. 可视模式(Visual Mode)

  • 进入方式:

    • v:字符级选择。

    • V:行级选择。

    • Ctrl+v:块级选择(列选择)。

  • 操作:选中文本后,可执行复制(y)、删除(d)、缩进(>)等操作。

4. 命令行模式(Ex Mode)

  • 进入方式:在命令模式下按 :

  • 用途:执行保存、退出、替换、配置等高级命令。


二、核心操作

1. 保存与退出

命令说明
:w保存当前文件。
:w [新文件名]另存为指定文件(如 :w backup.txt)。
:w !sudo tee %无权限时强制保存(需输入密码)。
:q退出,仅当文件未修改时生效。
:q!强制退出,丢弃所有未保存的修改。
:wq / :x保存并退出(:x 仅在修改后保存)。
ZZ快捷键,等同于 :wq

2. 导航与移动

命令说明
h/j/k/l

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

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

相关文章

kotlin 01flow-StateFlow 完整教程

一 Android StateFlow 完整教程:从入门到实战 StateFlow 是 Kotlin 协程库中用于状态管理的响应式流,特别适合在 Android 应用开发中管理 UI 状态。本教程将带全面了解 StateFlow 的使用方法。 1. StateFlow 基础概念 1.1 什么是 StateFlow? StateF…

开发搭载OneNet平台的物联网数据收发APP的设计与实现

一、开发环境与工具准备 工具安装 下载HBuilderX开发版(推荐使用开发版以避免插件兼容性问题)安装Node.js和npm(用于依赖管理及打包)配置Android Studio(本地打包需集成离线SDK)项目初始化 创建uni-app项目,选择“默认模板”或“空白模板”安装必要的UI库(如uView或Van…

HHsuite3 的 HHblits 和 HHsearch比较

HHblits 与 HHsearch 的核心区别及远源同源检测能力对比 一、核心功能与定位差异 特征HHblitsHHsearch核心目标快速迭代搜索,构建高质量多序列比对(MSA)和 Profile HMM,用于大规模序列聚类与初步同源筛选。高精度 Profile HMM-HMM 比对,用于深度同源检测与结构 / 功能预测…

【从零开始学习RabbitMQ | 第二篇】生成交换机到MQ的可靠性保障

目录 ​编辑前言 交换机 Direct交换机与Fanout交换机的差异 Topic交换机 Topic交换机相比Direct交换机的差异 生成我们的交换机,队列,以及绑定关系 基于代码去生成交换机和队列 基于注解去声明队列和交换机 消息转换器 消息队列的高可靠性 发送…

LeetCode 热题 100 22. 括号生成

LeetCode 热题 100 | 22. 括号生成 大家好,今天我们来解决一道经典的算法题——括号生成。这道题在 LeetCode 上被标记为中等难度,要求生成所有可能的并且有效的括号组合。这是一道非常经典的回溯法题目,非常适合用来练习递归和回溯的技巧。…

TestStand API 简介

TestStand API 简介 在自动化测试领域,TestStand 凭借其灵活的架构和强大的功能,成为众多开发者的首选工具。而 TestStand API(Application Programming Interface,应用程序编程接口)则是打开 TestStand 强大功能的 “…

如何修改 JAR 包中的源码

如何修改 JAR 包中的源码 前言一、准备工作二、将 JAR 当作 ZIP 打开并提取三、重写 Java 类方法 A:直接替换已编译的 .class方法 B:运行时类路径优先加载 四、修改 MyBatis(或其他)XML 资源五、重新打包 JAR(命令行&a…

存算一体架构下的新型AI加速范式:从Samsung HBM-PIM看近内存计算趋势

引言:突破"内存墙"的物理革命 冯诺依曼架构的"存储-计算分离"设计正面临根本性挑战——在GPT-4等万亿参数模型中,数据搬运能耗已达计算本身的200倍。存算一体(Processing-In-Memory, PIM)技术通过‌在存储介…

蓝桥杯15届国赛 合法密码

问题描述 小蓝正在开发自己的 OJ 网站。他要求网站用户的密码必须符合以下条件&#xff1a; 长度大于等于 8 个字符&#xff0c;小于等于 16 个字符。必须包含至少 1 个数字字符和至少 1 个符号字符。 例如 **lanqiao2024!、-*/0601、8((>w<))8** 都是合法的密码。 而…

Jenkins忘记admin密码后的恢复步骤

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 时间较长没有使用…

C++ - 仿 RabbitMQ 实现消息队列(1)(环境搭建)

C - 仿 RabbitMQ 实现消息队列&#xff08;1&#xff09;&#xff08;环境搭建&#xff09; 什么是消息队列核心特点核心组件工作原理常见消息队列实现应用场景优缺点 项目配置开发环境技术选型 更换软件源安装一些工具安装epel 软件源安装 lrzsz 传输工具安装git安装 cmake安装…

简单面试提问

Nosql非关系型数据库&#xff1a; Mongodb&#xff1a;开源、json形式储存、c编写 Redis&#xff1a;key-value形式储存&#xff0c;储存在内存&#xff0c;c编写 关系型数据库&#xff1a; sqlite;&#xff1a;轻量型、0配置、磁盘存储、支持多种语言 mysql&#xff1a;开源…

油气地震资料信号处理中的NMO(正常时差校正)

油气地震资料信号处理中的NMO&#xff08;正常时差校正&#xff09;介绍与应用 NMO基本概念 **正常时差校正&#xff08;Normal Moveout Correction&#xff0c;NMO&#xff09;**是地震资料处理中的一项关键技术&#xff0c;主要用于消除由于炮检距&#xff08;source-recei…

深度解析:从 GPT-4o“谄媚”到 Deepseek“物理腔”,透视大模型行为模式的底层逻辑与挑战

深度解析&#xff1a;从 GPT-4o“谄媚”到 AI“物理腔”&#xff0c;透视大模型行为模式的底层逻辑与挑战 标签&#xff1a;人工智能, GPT-4o, 大语言模型, AI伦理, 人机交互, 技术思考 大家好&#xff01;最近AI圈最火的“瓜”之一&#xff0c;莫过于OpenAI的GPT-4o模型在一…

Java引用RabbitMQ快速入门

这里写目录 Java发送消息给MQ消费者接收消息实现一个队列绑定多个消费者消息推送限制 Fanout交换机路由的作用Direct交换机使用案例 Java发送消息给MQ public void testSendMessage() throws IOException, TimeoutException {// 1.建立连接ConnectionFactory factory new Conn…

从读写分离到分布式服务:系统架构演进十阶段深度解析

第一阶段到第四阶段&#xff1a;架构进化四阶段&#xff1a;探索单体到集群的高可用性能优化之道-CSDN博客https://blog.csdn.net/pinbodeshaonian/article/details/147464084?spm1001.2014.3001.5502 以下是对从第五阶段到第十阶段详细的解释&#xff1a; 第五阶段&#xf…

Webug4.0靶场通关笔记07- 第9关反射XSS和第10关存储XSS

目录 第09关 反射型XSS 1.打开靶场 2.源码分析 3.渗透实战 第10关 存储型XSS 1.打开靶场 2.源码分析 3.渗透实战 本系列为通过《Webug4.0靶场通关笔记》的渗透集合&#xff0c;本文为反射型和存储型XSS漏洞关卡的渗透部分&#xff0c;通过对XSS关卡源码的代码审计找到漏…

Prometheus的安装部署

目录 一、概述 二、Prometheus的安装 1、二进制方式 1.1、下载系统安装包​编辑 1.2、解压 1.3、创建数据目录&#xff0c;服务运行用户 1.4、设置为系统服务&#xff08;创建服务运行脚本&#xff09; 1.5、启动服务&#xff0c;并通过浏览器访问验证 2、容器方式 2…

Jupyter Notebook为什么适合数据分析?

Jupyter Notebook 是一款超实用的 Web 应用程序&#xff0c;在数据科学、编程等诸多领域都发挥着重要作用。它最大的特点就是能让大家轻松创建和共享文学化程序文档。这里说的文学化程序文档&#xff0c;简单来讲&#xff0c;就是把代码、解释说明、数学公式以及数据可视化结果…

Python清空Word段落样式的方法

在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档&#xff0c;包括清空段落样式。以下是几种清空段落样式的方法&#xff1a; 方法一&#xff1a;直接设置段落样式为"Normal" from docx import Documentdoc Document(your_document.docx) # 打…