Linux Vim最全面的教程
Vim 是一个非常强大的文本编辑器,它在 Linux 环境中尤其受欢迎。Vim 支持高度定制,并且拥有丰富的功能,包括多级撤销、宏、脚本语言支持等。下面是关于 Vim 的一个较为全面的教程。
Vim 的启动
要启动 Vim,你可以在终端中输入 vim [filename]。如果你不指定文件名,Vim 将以空白文件的方式打开。
Vim 的模式
Vim 有三种基本模式:
- 命令模式 (
Normal mode) - 启动 Vim 时默认进入的模式。 - 插入模式 (
Insert mode) - 在此模式下可以输入文本。 - 底行模式 (
Command-line mode) - 用于执行 Vim 命令,例如保存文件或退出。
基本操作
命令模式
i- 插入模式,从当前位置开始插入文本。a- 插入模式,从当前位置之后开始插入文本。o- 在当前行下方新开一行并进入插入模式。O- 在当前行上方新开一行并进入插入模式。h- 光标向左移动一个字符。j- 光标向下移动一行。k- 光标向上移动一行。l- 光标向右移动一个字符。gg- 移动光标到文件的第一行。G- 移动光标到文件的最后一行。0(数字0) - 移动光标到当前行的起始位置。$- 移动光标到当前行的结束位置。u- 撤销上一次更改。Ctrl+r- 重做撤销的操作。dd- 删除当前行。x- 删除光标所在字符。yy- 复制当前行。p- 粘贴复制的内容。P- 粘贴复制的内容到当前行前面。:w- 保存文件。:q- 退出 Vim。:q!- 不保存退出 Vim。:wq- 保存并退出 Vim。:set nu- 显示行号。:set nonu- 取消显示行号。
插入模式
Esc- 退出插入模式回到命令模式。Shift + [,Shift + ]- 分别缩进和取消缩进当前行。
底行模式
:set- 显示所有当前设置。:set [option]- 设置 Vim 的选项,例如:set number显示行号。:help [command]- 显示 Vim 的帮助文档。:w!- 强制保存文件。:r [filename]- 读取另一个文件的内容到当前缓冲区。:w [filename]- 保存文件到指定的新文件名。:new- 打开一个新窗口。:tabnew- 打开一个新标签页。
高级功能
视觉模式
v- 进入视觉模式,选择文本。V- 进入列选择模式。Ctrl+v- 进入块选择模式。y- 复制选中的文本。d- 删除选中的文本。c- 替换选中的文本。shift+j- 在视觉模式下合并两行。
搜索和替换
/pattern- 向下搜索匹配pattern的文本。?pattern- 向上搜索匹配pattern的文本。n- 跳到下一个匹配项。N- 跳到上一个匹配项。:s/pattern/replacement/flags- 替换当前行中的第一个匹配项。:1,$s/pattern/replacement/flags/g- 替换整个文件中的所有匹配项。:.,+10s/pattern/replacement/flags/g- 替换从当前行开始的 10 行内的所有匹配项。
插件和脚本
- Vim 支持大量的插件,可以通过
:PluginInstall(如果你使用的是 Vundle) 或其他插件管理器来安装。 - Vim 支持自定义脚本,可以通过
.vimrc文件来设置 Vim 的行为。
学习资源
- 官方文档: Vim 的官方文档是最权威的学习资源。
- Vim Awesome: 一个包含各种 Vim 插件和资源的列表。
- Learn Vimscript the Hard Way: 一本教授 Vim 脚本语言的书籍。
- Vimcasts: 一系列的视频教程,教你如何高效使用 Vim。
实践
练习是掌握 Vim 的关键。尝试每天使用 Vim 来编辑文本,随着时间的推移你会越来越熟悉它的各种功能。你可以从简单的文本编辑任务开始,逐渐尝试更复杂的操作。
以上是 Vim 的一个基础教程,希望对你有所帮助。如果你有任何具体的问题或需要进一步的帮助,请随时提问!
相关文章:
Linux Vim最全面的教程
Vim 是一个非常强大的文本编辑器,它在 Linux 环境中尤其受欢迎。Vim 支持高度定制,并且拥有丰富的功能,包括多级撤销、宏、脚本语言支持等。下面是关于 Vim 的一个较为全面的教程。 Vim 的启动 要启动 Vim,你可以在终端中输入 v…...
setsockopt选项对tcp速度
GPT-4 (OpenAI) 每个setsockopt调用都涉及到一个套接字描述符,一个指定网络层的常数(如IPPROTO_IP, IPPROTO_TCP, IPPROTO_IPV6, SOL_SOCKET等),一个指定需配置的选项的常数,一个指向配置值的指针,以及那个…...
HarmonyOS应用开发者高级认证,Next版本发布后最新题库 - 多选题序号3
基础认证题库请移步:HarmonyOS应用开发者基础认证题库 注:有读者反馈,题库的代码块比较多,打开文章时会卡死。所以笔者将题库拆分,单选题20个为一组,多选题10个为一组,题库目录如下,…...
bool数组的理解和应用[C++]
文章目录 bool数组的用法bool数组的定义声明bool数组的初始化访问和修改数组元素遍历数组 运用bool数组简单代码 在今天做题中发现了bool类不仅能用于函数类型还能用于数组类型,好奇查了查发现bool还有很多用处:基本变量,在枚举类型中会用到&…...
JavaScript模拟滑动手势
双击回到顶部 左滑动 右滑动 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Gesture…...
Text Control 控件教程:使用 .NET C# 中的二维码和条形码增强文档
QR 码和条形码非常适合为文档和 PDF 文件增加价值,因为它们提供轻松的信息访问、验证信息、跟踪项目和提高交互性。条形码可以弥补纸质或数字人类可读文档与网络门户或网络应用程序中的数字信息之间的差距。大多数用户都熟悉 QR 码和条形码,它们在许多过…...
最新爆火的开源AI项目 | LivePortrait 本地安装教程
LivePortrait 本地部署教程,强大且开源的可控人像AI视频生成 1,准备工作,本地下载代码并准备环境,运行命令前需安装git 以下操作不要安装在C盘和容量较小的硬盘,可以找个大点的硬盘装哟 2,需要安装FFmp…...
揭秘Django与Neo4j:构建智能知识图谱的终极指南
揭秘Django与Neo4j:构建智能知识图谱的终极指南 前言 图是一种用于对象之间的成对关系进行建模的数学结构。 它由两个主要元素组成:节点和关系。 节点:节点可以看作是传统数据库中的记录。每个节点代表一个对象或实体,例如一个人或一个地方。节点按标签分类,这有助于根…...
项目一缓存商品
文章目录 概要整体架构流程技术细节小结 概要 因为商品是经常被浏览的,所以数据库的访问量就问大大增加,造成负载过大影响性能,所以我们需要把商品缓存到redis当中,因为redis是存在内存中的,所以效率会比MySQL的快. 整体架构流程 技术细节 我们在缓存时需要保持数据的一致性所…...
SEO与数据中心代理IP的结合能带来哪些便利?
本文将探讨将SEO与数据中心代理IP结合所带来的好处,以及如何利用这种组合来提升网站在搜索引擎中的排名和可见性。 1. 数据中心代理IP的作用和优势 数据中心代理IP指的是由数据中心提供的IP地址,用于隐藏真实服务器的位置和身份。与其他类型的代理IP相…...
《昇思25天学习打卡营第6天|ResNet50图像分类》
写在前面 从本次开始,接触一些上层应用。 本次通过经典的模型,开始本次任务。这里开始学习resnet50网络模型,应该也会有resnet18,估计18的模型速度会更快一些。 resnet 通过对论文的结论进行展示,说明了模型的功能&…...
Activiti 6 兼容openGauss数据库bytes类型不匹配
当前有个项目需要做国产调研,需要适配高斯数据库,项目启动的时候,提示column "bytes_" is type bytea but expression is of type blob byte_字段是act_ge_bytearray表的,openGauss里的类型是bytea,类型是匹…...
缓存技术:提升性能与效率的利器
在当今数字化时代,软件应用的性能与响应速度成为了衡量其成功与否的重要标准之一。随着数据量的爆炸性增长和用户需求的日益多样化,如何高效地处理这些数据并快速响应用户请求成为了软件开发中亟待解决的问题。缓存技术,作为提升系统性能、优…...
LeetCode 637, 67, 399
文章目录 637. 二叉树的层平均值题目链接标签思路代码 67. 二进制求和题目链接标签思路代码 399. 除法求值题目链接标签思路导入value 属性find() 方法union() 方法query() 方法 代码 637. 二叉树的层平均值 题目链接 637. 二叉树的层平均值 标签 树 深度优先搜索 广度优先…...
如何压缩视频大小不改变画质?这5个视频压缩免费软件超好用!
如何压缩视频大小不改变画质?随着生活的水平逐步提高,视频流媒体服务越来越受欢迎。提供简短而引人注目的视频来展示您的产品或服务已成为一种出色的营销手段。然而,当您要准备导出最终视频时,可能会面临一个常见问题:…...
深入理解 Java 虚拟机第三版(周志明)
这次社招选的这本作为 JVM 资料查阅,记录一些重点 1. 虚拟机历史 Sun Classic VM :已退休 HotSpot VM:主流虚拟机,热点代码探测技术 Mobile / Embedded VM :移动端、嵌入式使用的虚拟机 2.2 运行时数据区域 程序计…...
算法 定长按组翻转链表
一、题目 已知一个链表的头部head,每k个结点为一组,按组翻转。要求返回翻转后的头部 k是一个正整数,它的值小于等于链表长度。如果节点总数不是k的整数倍,则剩余的结点保留原来的顺序。示例如下: (要求不…...
安装nfs和rpcbind设置linux服务器共享磁盘
1、安装nfs和rpcbind 1.1 检查服务器是否安装nfs和rpcbind,执行下命令,检查服务器是否安装过。 rpm -qa|grep nfs rpm -qa|grep rpcbind 说明服务器以安装了,如果没有就需要自己安装 2、安装nfs和rpcbind 将rpm安装包: libtirpc-…...
物联网在电力行业的应用
作者主页: 知孤云出岫 这里写目录标题 作者主页:物联网在电力行业的应用简介主要应用领域代码案例分析1. 智能电表数据采集和分析2. 设备监控和预测性维护3. 能耗管理和优化4. 电力负载预测5. 分布式能源管理6. 电动汽车充电管理7. 电网安全与故障检测 物联网在电力行业的应用…...
Java 代码规范if嵌套
在Java编程中,过度的if嵌套会使代码难以阅读和维护。为了遵循良好的代码规范,我们应尽量减少嵌套的深度。这通常可以通过重新组织代码或使用其他结构(如switch语句,或者将逻辑封装到单独的方法中)来实现。 以下是一个…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
从WWDC看苹果产品发展的规律
WWDC 是苹果公司一年一度面向全球开发者的盛会,其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具,对过去十年 WWDC 主题演讲内容进行了系统化分析,形成了这份…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
