【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 忽略安全异常 …...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
STM32---外部32.768K晶振(LSE)无法起振问题
晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…...
