Vim 编辑器详细教程

Vim 编辑器详细教程

Vim 是一个强大的文本编辑器,以其高效的编辑能力和强大的功能著称,特别适合程序员和文字处理工作者。以下是一个详细的 Vim 教程,从基础操作到高级用法。


1. Vim 基础操作

1.1 Vim 的三种模式

  • 正常模式(Normal Mode):默认进入的模式,用于浏览、操作和执行命令。
  • 插入模式(Insert Mode):用于编辑文本,按 i 进入。
  • 命令模式(Command Mode):执行文件操作或配置命令,按 : 进入。
  • ESC:三种模式切换。

1.2 启动和退出 Vim

  • 启动 Vim:

    vim 文件名
    
  • 退出 Vim:

    • 保存并退出:: → 输入 wq → 按 Enter
    • 强制退出(不保存):: → 输入 q! → 按 Enter

2. Vim 基本移动命令

  • 按键快速移动:
    • h:向左移动一个字符
    • l:向右移动一个字符
    • j:向下移动一行
    • k:向上移动一行
  • 按单词移动:
    • w:跳到下一个单词开头
    • e:跳到当前或下一个单词末尾
    • b:跳到当前或前一个单词开头
  • 按行快速移动:
    • 0:跳到行首
    • ^:跳到行首的第一个非空字符
    • $:跳到行尾
  • 按页移动:
    • Ctrl-d:向下滚动半屏
    • Ctrl-u:向上滚动半屏

3. 文本编辑操作

3.1 插入文本

  • i:在光标前插入
  • I:在行首插入
  • a:在光标后插入
  • A:在行尾插入
  • o:在当前行下插入新行
  • O:在当前行上插入新行

3.2 删除文本

  • x:删除光标处字符
  • dw:删除当前单词
  • dd:删除当前行
  • d$:删除光标到行尾
  • d0:删除光标到行首

3.3 复制与粘贴

  • yy:复制当前行
  • y$:复制光标到行尾
  • p:粘贴到光标后
  • P:粘贴到光标前

3.4 替换文本

  • r:替换当前字符
  • R:进入替换模式
  • cw:替换当前单词
  • C:替换光标到行尾内容

4. 搜索与替换

4.1 搜索

  • /关键词:向下搜索
  • ?关键词:向上搜索
  • n:跳到下一个匹配
  • N:跳到上一个匹配

4.2 替换

  • 单次替换::%s/旧文本/新文本/g
  • 确认替换::%s/旧文本/新文本/gc

5. 多文件与多窗口

5.1 分屏操作

  • :sp 文件名:水平分屏
  • :vsp 文件名:垂直分屏
  • Ctrl-w + 方向键:切换窗口

5.2 标签页

  • :tabnew 文件名:打开新标签页
  • :tabn:切换到下一个标签页
  • :tabp:切换到上一个标签页

6. Vim 配置

6.1 创建配置文件

Vim 配置文件路径:

  • Linux: ~/.vimrc
  • Windows: C:\Users\<用户名>\_vimrc

6.2 常用配置

set number           " 显示行号
set tabstop=4        " 设置 Tab 宽度为 4
set shiftwidth=4     " 自动缩进宽度为 4
set expandtab        " 将 Tab 转为空格
set autoindent       " 自动缩进
set hlsearch         " 高亮搜索结果
set incsearch        " 实时搜索
syntax on            " 开启语法高亮

7. 高级功能

7.1 宏录制

  • 开始录制:按 q → 输入一个字母(如 a
  • 执行操作(如插入文本或删除行)
  • 结束录制:再次按 q
  • 播放宏:@a

7.2 快速跳转

  • Ctrl-o:返回上一个光标位置
  • Ctrl-i:前进到下一个光标位置

8. 学习资源

  • 官方文档::help
  • 在线教程:Vim Adventures

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

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

相关文章

uni-app 中使用微信小程序第三方 SDK 及资源汇总

&#x1f380;&#x1f380;&#x1f380;uni-app 跨端开发系列 &#x1f380;&#x1f380;&#x1f380; 一、uni-app 组成和跨端原理 二、uni-app 各端差异注意事项 三、uni-app 离线本地存储方案 四、uni-app UI库、框架、组件选型指南 五、uni-app 蓝牙开发 六、uni-app …

17.2、应急事件场景与处理流程

目录 常见网络安全应急事件场景网络安全应急处理流程应急演练类型 常见网络安全应急事件场景 应急事件的处理场景&#xff0c;分成四类场景&#xff0c;恶意程序事件&#xff0c;网络攻击事件&#xff0c;还有网站相关的一些安全事件&#xff0c;最后是拒绝服务事件 恶意程序…

PostgreSQL表达式的类型

PostgreSQL表达式是数据库查询和操作中非常重要的组成部分。它们由一个或多个值、运算符和PostgreSQL函数组合而成,用于求值或执行特定的操作。PostgreSQL表达式类似于公式,是用查询语言编写的。它们可以用于查询数据库中的特定数据集,或者在进行数据操作时执行计算和逻辑判…

.NET能做什么?全面解析.NET的应用领域

.NET 是由微软开发的一个开源、跨平台的开发框架。它不仅支持构建各种应用程序&#xff0c;还能运行在不同的操作系统上&#xff0c;包括 Windows、Linux 和 macOS。自从 .NET Core 的推出&#xff0c;.NET 成为了一个现代化的开发平台&#xff0c;能够满足企业和开发者日益多样…

19_HTML5 Web Workers --[HTML5 API 学习之旅]

HTML5 Web Workers 是一种允许 JavaScript 在后台线程中运行的技术&#xff0c;从而不会阻塞用户界面或其他脚本的执行。通过使用 Web Workers&#xff0c;你可以执行复杂的计算任务而不影响页面的响应速度&#xff0c;提升用户体验。 Web Workers 的特点 Web Workers 是 HTM…

十二、SQL 进阶:高级技巧提升查询效率实战指南

SQL 进阶&#xff1a;高级技巧提升查询效率实战指南 一、索引优化&#xff1a;数据库的“高速公路” 索引犹如图书馆里的书籍索引卡&#xff0c;可使数据库迅速定位所需数据&#xff0c;避免全表扫描。例如&#xff0c;在存储员工信息的表employees&#xff08;包含字段emplo…

Java 23和JDK 23详细安装方法,常用命令使用等

Java JDK 23 是 Oracle 提供的最新版本的 Java 开发工具包&#xff0c;它包含了 Java 编程语言的最新特性和改进。本教程将介绍如何安装 JDK 23&#xff0c;并详细讲解一些常用的命令和用法。 一、安装 JDK 23 下载 JDK 23&#xff1a; 提供了 Windows、macOS 和 Linux 的安装…

红黑树 Red-Black Tree介绍

1. 红黑树的定义 红黑树是一种具有如下性质的二叉搜索树&#xff1a; 每个节点是红色或黑色。根节点是黑色。所有叶子节点都是黑色的空节点&#xff08;NIL节点&#xff09;&#xff0c;即哨兵节点。如果一个节点是红色&#xff0c;那么它的子节点一定是黑色。&#xff08;不存…

《解锁 Python 数据挖掘的奥秘》

《解锁 Python 数据挖掘的奥秘》 一、Python 数据挖掘基础&#xff08;一&#xff09;Python 基础与数据挖掘环境搭建&#xff08;二&#xff09;数据挖掘基本流程概述 二、Python 数据挖掘核心技术&#xff08;一&#xff09;数据收集与预处理技术&#xff08;二&#xff09;常…

爆改RagFlow

Rag理论概述 由近期 RAGFlow 的火爆看 RAG 的现状与未来 Ragflow解析参数说明 ♥ RagFlow源码解析 实际的文件解析通过接口 /v1/document/run 进行触发的&#xff0c;实际的处理是在 api/db/services/task_service.py 中的 queue_tasks() 中完成的&#xff0c;此方法会根据文件…

【GeekBand】C++设计模式笔记15_Proxy_代理模式

1. “接口隔离” 模式 在组件构建过程中&#xff0c;某些接口之间直接的依赖常常会带来很多问题&#xff0c;甚至根本无法实现。采用添加一层间接&#xff08;稳定&#xff09;接口&#xff0c;来隔离本来互相紧密关联的接口是一种常见的解决方案。典型模式 FacadeProxyAdapte…

OpenTK 中帧缓存的深度解析与应用实践

摘要: 本文深入探讨了 OpenTK 中帧缓存的使用。首先介绍了帧缓存的基本概念与在图形渲染管线中的关键地位,包括其与颜色缓存、深度缓存、模板缓存等各类缓存的关联。接着详细阐述了帧缓存对象(FBO)的创建、绑定与解绑等操作,深入分析了纹理附件、渲染缓冲区附件在 FBO 中的…

springboot测试类里注入不成功且运行报错

目录 出错信息 原因 出错信息 写测试类的时候&#xff0c;一直说我注入不成功 而且我运行的时候报错了 java.lang.IllegalStateException: Unable to find a SpringBootConfiguration, you need to use ContextConfiguration or SpringBootTest(classes...) with your te…

Docker下TestHubo安装配置指南

TestHubo是一款开源免费的测试管理工具&#xff0c; 下面介绍Docker 私有部署的安装与配置。TestHubo 私有部署版本更适合有严格数据安全要求的企业&#xff0c;支持在本地或专属服务器上运行&#xff0c;以实现对数据和系统的完全控制。 1、Docker 服务端安装 Docker安装包下…

Redis实战篇(四、高级数据结构的使用)

目录 五、达人探店 1.发布探店笔记 2.查看探店笔记 3.点赞功能 4.点赞排行榜 六、好友关注 1.关注和取消关注 2.共同关注 3.关注推送 &#xff08;1&#xff09;Feed流实现方案分析 &#xff08;2&#xff09;推送到粉丝收件箱 &#xff08;3&#xff09;实现分页查询…

基本操作:iframe、alert

背景 如果你的目标元素出现在一个iframe标签下&#xff0c;则不能直接定位&#xff0c;必须先完成切换才能进行定位操作&#xff0c;如下图 整个理解为一个大的房间&#xff0c;里面是客厅&#xff0c;driver进到客厅后&#xff0c;如果想操作iframe A里的数据&#xff0c;需…

质数生成函数、质数判断备份

以下都是测试int 32bit范围内的质数。 例如&#xff1a;1-200000014范围内有11078937个质数。 大数要用专门的类&#xff0c;支持任意范围大数。 质数定理给出了一个近似估计小于等于 n 的质数个数的公式&#xff1a; π(n) ≈ n / ln(n) 其中 π(n) 表示小于等于 n 的质数个…

scala基础学习_运算符

文章目录 scala运算符算术运算符关系运算符逻辑运算符位运算符其他运算符赋值运算符 scala运算符 在 Scala 中&#xff0c;运算符通常被定义为方法。这意味着你可以将运算符视为对象上的方法调用。以下是一些常用的运算符及其对应的操作&#xff1a; 算术运算符 &#xff1a…

【C++11】类型分类、引用折叠、完美转发

目录 一、类型分类 二、引用折叠 三、完美转发 一、类型分类 C11以后&#xff0c;进一步对类型进行了划分&#xff0c;右值被划分纯右值(pure value&#xff0c;简称prvalue)和将亡值 (expiring value&#xff0c;简称xvalue)。 纯右值是指那些字面值常量或求值结果相当于…

IntelliJ Idea常用快捷键详解

文章目录 IntelliJ Idea常用快捷键详解一、引言二、文本编辑与导航1、文本编辑2、代码折叠与展开 三、运行和调试四、代码编辑1、代码补全 五、重构与优化1、重构 六、使用示例代码注释示例代码补全示例 七、总结 IntelliJ Idea常用快捷键详解 一、引言 在Java开发中&#xff…