【linux】vim的使用
目录
一、Vim的基本模式
二、Vim的常见命令
三、Vim的高级用法
四、Vim的进阶使用技巧
在Linux系统中,Vim是一款功能强大的文本编辑器,特别适用于程序员的代码编辑和修改。以下是Vim的详细使用教程,包括其基本模式、常见命令和高级用法。
一、Vim的基本模式
Vim具有三种主要的工作模式:
命令模式(Normal mode):这是Vim的默认模式。在命令模式下,你可以进行复制、粘贴、剪切、查找、替换等操作,还可以进入插入模式或底行模式。
插入模式(Insert mode):在插入模式下,你可以输入文本。要进入插入模式,可以在命令模式下按`i`(在当前字符前插入)、`a`(在当前字符后插入)、`o`(在当前行下方新开一行)等键。要退出插入模式回到命令模式,按`Esc`键。
底行模式(Visual mode/Visual Line mode/Visual Block mode):在底行模式下,你可以执行保存、退出Vim、查找替换等命令。在命令模式下,按`:`可以进入底行模式。
二、Vim的常见命令
1. 移动光标:在命令模式下,使用`h`(左)、`j`(下)、`k`(上)、`l`(右)键移动光标。也可以使用`w`(移动到下一个单词的开头)、`b`(移动到上一个单词的开头)等键。
2. 删除文本:在命令模式下,`x`键删除当前光标处的字符,`dd`键删除当前行,`dw`键删除从当前光标到单词末尾的内容。
3. 复制和粘贴:在命令模式下,`yy`键复制当前行,`p`键粘贴。
4. 查找和替换:在底行模式下,使用`:%s/old/new/g`命令进行全文替换,其中`old`是要被替换的文本,`new`是替换后的文本。
5. 保存和退出:在底行模式下,`:w`命令保存文件,`:q`命令退出Vim。如果要保存并退出,可以使用`:wq`命令或简写为`ZZ`。
三、Vim的高级用法
1. 可视模式:在命令模式下,按`v`键进入可视模式,此时你可以使用方向键选择文本块。按`V`键进入可视行模式,可以整行整行地选择文本。按`Ctrl+v`进入可视块模式,可以选择矩形区域的文本。
2. 多文件操作:Vim支持同时编辑多个文件。在底行模式下,使用`:e filename`命令可以打开另一个文件。使用`:n`和`:prev`命令可以在多个文件之间切换。
3. 宏录制:Vim支持宏录制功能,你可以录制一系列操作,并在需要时重复执行。在命令模式下,按`q`键开始录制宏,然后执行你要录制的操作。录制完成后,按`q`键停止录制。要执行宏,可以在命令模式下按`@`键后跟上宏的编号。
4. 自定义配置:Vim的配置文件是`.vimrc`,位于用户家目录下。你可以在这个文件中设置各种选项和映射,以自定义Vim的行为和外观。
四、Vim的进阶使用技巧
1. 折叠代码:Vim支持代码折叠,这对于编辑长文件或代码文件特别有用。你可以使用`zc`(折叠)、`zo`(打开折叠)、`zM`(折叠所有)、`zR`(打开所有折叠)等命令来操作。在`.vimrc`文件中,你可以通过`set foldmethod`来设置折叠方法(如`indent`、`syntax`等)。
2. 自动补全:Vim具有强大的自动补全功能,包括关键字补全、字典补全、文件名补全等。在插入模式下,你可以按`Ctrl+n`或`Ctrl+p`来触发关键字补全,按`Ctrl+x Ctrl+f`来触发文件名补全。
3. 缩进和格式化: Vim可以自动缩进你的代码,并保持一致的格式。你可以使用`=`键来自动缩进当前行或选中的文本块。在`.vimrc`文件中,你可以设置`cindent`、`smartindent`或`autoindent`等选项来控制缩进行为。
4. 标记和跳:Vim支持在文件中设置标记,并快速跳转到这些标记。在命令模式下,你可以使用`m<a-z>`来设置标记(其中`<a-z>`是字母键),使用`'<a-z>`或`` `<a-z>``来跳转到标记。
5. 分屏编辑:Vim支持在一个窗口中同时编辑多个文件。你可以使用`:split`或`:vsplit`命令来水平或垂直分割窗口,并使用`Ctrl+w`加上方向键来在窗口之间切换。
6. 插件管理:Vim有许多强大的插件可以扩展其功能。为了管理这些插件,你可以使用Vim的插件管理器,如Vundle、Pathogen或NeoBundle。在`.vimrc`文件中,你可以配置这些管理器来自动安装、更新和卸载插件。
7. 使用Vim的教程和文档:Vim自带了详细的教程和文档,你可以在Vim中直接访问它们。在Vim中,输入`:help`命令可以打开帮助文档,输入`:tutor`命令可以打开Vim的交互式教程。
8. 自定义快捷键:你可以在`.vimrc`文件中定义自己的快捷键来执行常用的操作。例如,你可以定义一个快捷键来快速保存并退出Vim,或者定义一个快捷键来快速格式化当前代码块。
9. 与其他工具的集成:Vim可以与其他工具(如编译器、构建系统、版本控制系统等)集成,以提高工作效率。例如,你可以使用Vim的插件来自动编译和运行你的代码,或者使用Vim的插件来与Git等版本控制系统进行交互。
Vim是一个功能强大且高度可定制的文本编辑器,它可以帮助你更高效地编写和编辑文本。虽然Vim的学习曲线可能有些陡峭,但一旦你掌握了它的基本操作和高级技巧,你就会发现它是一个非常强大的工具。希望这个进阶使用教程能帮助你更深入地了解Vim,并进一步提高你的工作效率。
相关文章:
【linux】vim的使用
目录 一、Vim的基本模式 二、Vim的常见命令 三、Vim的高级用法 四、Vim的进阶使用技巧 在Linux系统中,Vim是一款功能强大的文本编辑器,特别适用于程序员的代码编辑和修改。以下是Vim的详细使用教程,包括其基本模式、常见命令和高级用法。…...
【工具测评】ONLYOFFICE8.1版本桌面编辑器测评:好用!
随着远程工作的普及和数字化办公的发展,越来越多的人开始寻找功能强大、易于使用的办公软件。在这个背景下,ONLYOFFICE 8.1应运而生,成为许多用户的新选择。ONLYOFFICE 8.1是一款办公套件软件,提供文档处理、电子表格和幻灯片制作…...
核方法总结(四)——高斯过程回归学习笔记
一、定义 基于核方法的线性回归模型和传统线性回归一样,可以用未知数据进行预测,但不能确定 预测的可信度。在参考书第二章中可知,基于贝叶斯方法可以实现对未知数据依概率预测,进而可得到预测的可信度。这一方法中,通…...
【Python3的内置函数和使用方法】
目录 Python 特点 Python 中文编码 Python 变量类型 Python列表 Python 元组 元组是另一个数据类型,类似于 List(列表) Python 字典 Python数据类型转换 Python 运算符 Python算术运算符 Python比较运算符 Python赋值运算符 Pyt…...
递推算法计算信号特征
在线算法(在线计算或递推计算)能够在不存储全部数据的情况下逐步更新信号的特征信息,非常适合资源受限的单片机应用场景。 用途:单片机边采集ADC边计算,最终将采集的信号特征计算结果…...
spring-boot-configuration-processor注释处理器
开源项目SDK:https://github.com/mingyang66/spring-parent 个人文档:https://mingyang66.github.io/raccoon-docs/#/ spring-boot-configuration-processor是springboot提供的一个注释处理器(annotation processor),它用于在编译…...
Python和MATLAB粘性力接触力动态模型半隐式欧拉算法
🎯要点 🎯运动力模型计算制作过程:🖊相机捕捉网球运动图,制定运动数学模型,数值微分运动方程 | 🖊计算运动,欧拉算法离散积分运动,欧拉-克罗默算法微分运动方程 &#…...
webstorm无法识别tsconfig.json引用项目配置文件中的路径别名
问题 vite项目模板中,应用的ts配置内容写在tsconfig.app.json文件中,并在tsconfig.json通过项目引用的方式导入 {"files": [],"references": [{"path": "./tsconfig.app.json"},{"path": "./t…...
qiankun微前端:qiankun+vite+vue3+ts(未完待续..)
目录 什么是微前端 目前现有的微前端 好处 使用 子应用的页面在主应用里显示 什么是微前端 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。 我的理解就是将一个大型的前端应用拆分成多个模块,每个微前端模块可以由…...
001:开源交易系统开发实战开篇
本专栏采用融入【主力思维】的方法学,包含数据抓取、特征模型开发、历史验证回归测试、每日动态风险评估管理等技术,较大的增强股票投资胜率,让IT开发者拥有一套属于自己思路的专用交易软件。 先简要介绍系统成功和项目,后续持续…...
Pytorch实战(一):LeNet神经网络
文章目录 一、模型实现1.1数据集的下载1.2加载数据集1.3模型训练1.4模型预测 LeNet神经网络是第一个卷积神经网络(CNN),首次采用了卷积层、池化层这两个全新的神经网络组件,接收灰度图像,并输出其中包含的手写数字&…...
RabbitMq的基础及springAmqp的使用
RabbitMq 官网:RabbitMQ: One broker to queue them all | RabbitMQ 什么是MQ? mq就是消息队列,消息队列遵循这先入先出原则。一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用…...
uniapp uniCloud云开发
uniCloud概述 uniCloud 是 DCloud 联合阿里云、腾讯云、支付宝云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。 uniCloud 的 web控制台地址:https://unicloud.dcloud.net.cn 文档:https://doc.dcloud.net.cn/uniCloud/ un…...
智能扫地机,让生活电器更加便民-NV040D扫地机语音方案
一、语音扫地机开发背景: 随着人工智能和物联网技术的飞速发展,智能家居设备已成为现代家庭不可或缺的一部分。其中,扫地机作为家庭清洁的重要工具,更是得到了广泛的关注和应用。 然而,传统的扫地机在功能和使用上仍存…...
【后端面试题】【中间件】【NoSQL】ElasticSearch索引机制和高性能的面试思路
Elasticsearch的索引机制 Elasticsearch使用的是倒排索引,所谓的倒排索引是相对于正排索引而言的。 在一般的文件系统中,索引是文档映射到关键字,而倒排索引则相反,是从关键字映射到文档。 如果没有倒排索引的话,想找…...
【漏洞复现】时空智友ERP updater.uploadStudioFile接口处存在任意文件上传
0x01 产品简介 时空智友ERP是一款基于云计算和大数据技术的企业资源计划管理系统。该系统旨在帮助企业实现数字化转型,提高运营效率、降低成本、增强决策能力和竞争力,时空智友ERP系统涵盖了企业的各个业务领域,包括财务管理、供应链管理、生…...
[leetcode hot 150]第五百三十题,二叉搜索树的最小绝对差
题目: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 解析: minDiffInBST 方法是主要方法。创建一个 ArrayList 来存储树的节点值。inorderTrave…...
【Docker】可视化平台Portainer
文章目录 Portainer的特点Portainer的安装步骤注意事项 Docker的可视化工具Portainer是一个轻量级的容器管理平台,它为用户提供了一个直观的图形界面来管理Docker环境。以下是关于Portainer的详细介绍和安装步骤: Portainer的特点 轻量级:P…...
MySQL高级-MVCC-原理分析(RR级别)
文章目录 1、RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView2、总结 1、RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView 而RR 是可重复读,在一个事务中&…...
压力测试Monkey命令参数和报告分析
目录 常用参数 -p <测试的包名列表> -v 显示日志详细程度 -s 伪随机数生成器的种子值 --throttle < 毫秒> --ignore-crashes 忽略崩溃 --ignore-timeouts 忽略超时 --monitor-native-crashes 监视本地崩溃代码 --ignore-security-exceptions 忽略安全异常 …...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)
在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...
高抗扰度汽车光耦合器的特性
晶台光电推出的125℃光耦合器系列产品(包括KL357NU、KL3H7U和KL817U),专为高温环境下的汽车应用设计,具备以下核心优势和技术特点: 一、技术特性分析 高温稳定性 采用先进的LED技术和优化的IC设计,确保在…...
C++中vector类型的介绍和使用
文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...
