当前位置: 首页 > news >正文

【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系统中&#xff0c;Vim是一款功能强大的文本编辑器&#xff0c;特别适用于程序员的代码编辑和修改。以下是Vim的详细使用教程&#xff0c;包括其基本模式、常见命令和高级用法。…...

【工具测评】ONLYOFFICE8.1版本桌面编辑器测评:好用!

随着远程工作的普及和数字化办公的发展&#xff0c;越来越多的人开始寻找功能强大、易于使用的办公软件。在这个背景下&#xff0c;ONLYOFFICE 8.1应运而生&#xff0c;成为许多用户的新选择。ONLYOFFICE 8.1是一款办公套件软件&#xff0c;提供文档处理、电子表格和幻灯片制作…...

核方法总结(四)——高斯过程回归学习笔记

一、定义 基于核方法的线性回归模型和传统线性回归一样&#xff0c;可以用未知数据进行预测&#xff0c;但不能确定 预测的可信度。在参考书第二章中可知&#xff0c;基于贝叶斯方法可以实现对未知数据依概率预测&#xff0c;进而可得到预测的可信度。这一方法中&#xff0c;通…...

【Python3的内置函数和使用方法】

目录 Python 特点 Python 中文编码 Python 变量类型 Python列表 Python 元组 元组是另一个数据类型&#xff0c;类似于 List&#xff08;列表&#xff09; Python 字典 Python数据类型转换 Python 运算符 Python算术运算符 Python比较运算符 Python赋值运算符 Pyt…...

递推算法计算信号特征

在线算法&#xff08;在线计算或递推计算&#xff09;能够在不存储全部数据的情况下逐步更新信号的特征信息&#xff0c;非常适合资源受限的单片机应用场景。 用途&#xff1a;单片机边采集&#xff21;&#xff24;&#xff23;边计算&#xff0c;最终将采集的信号特征计算结果…...

spring-boot-configuration-processor注释处理器

开源项目SDK&#xff1a;https://github.com/mingyang66/spring-parent 个人文档&#xff1a;https://mingyang66.github.io/raccoon-docs/#/ spring-boot-configuration-processor是springboot提供的一个注释处理器&#xff08;annotation processor&#xff09;,它用于在编译…...

Python和MATLAB粘性力接触力动态模型半隐式欧拉算法

&#x1f3af;要点 &#x1f3af;运动力模型计算制作过程&#xff1a;&#x1f58a;相机捕捉网球运动图&#xff0c;制定运动数学模型&#xff0c;数值微分运动方程 | &#x1f58a;计算运动&#xff0c;欧拉算法离散积分运动&#xff0c;欧拉-克罗默算法微分运动方程 &#…...

webstorm无法识别tsconfig.json引用项目配置文件中的路径别名

问题 vite项目模板中&#xff0c;应用的ts配置内容写在tsconfig.app.json文件中&#xff0c;并在tsconfig.json通过项目引用的方式导入 {"files": [],"references": [{"path": "./tsconfig.app.json"},{"path": "./t…...

qiankun微前端:qiankun+vite+vue3+ts(未完待续..)

目录 什么是微前端 目前现有的微前端 好处 使用 子应用的页面在主应用里显示 什么是微前端 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。 我的理解就是将一个大型的前端应用拆分成多个模块&#xff0c;每个微前端模块可以由…...

001:开源交易系统开发实战开篇

本专栏采用融入【主力思维】的方法学&#xff0c;包含数据抓取、特征模型开发、历史验证回归测试、每日动态风险评估管理等技术&#xff0c;较大的增强股票投资胜率&#xff0c;让IT开发者拥有一套属于自己思路的专用交易软件。 先简要介绍系统成功和项目&#xff0c;后续持续…...

Pytorch实战(一):LeNet神经网络

文章目录 一、模型实现1.1数据集的下载1.2加载数据集1.3模型训练1.4模型预测 LeNet神经网络是第一个卷积神经网络&#xff08;CNN&#xff09;&#xff0c;首次采用了卷积层、池化层这两个全新的神经网络组件&#xff0c;接收灰度图像&#xff0c;并输出其中包含的手写数字&…...

RabbitMq的基础及springAmqp的使用

RabbitMq 官网:RabbitMQ: One broker to queue them all | RabbitMQ 什么是MQ&#xff1f; mq就是消息队列&#xff0c;消息队列遵循这先入先出原则。一般用来解决应用解耦&#xff0c;异步消息&#xff0c;流量削峰等问题&#xff0c;实现高性能&#xff0c;高可用&#xf…...

uniapp uniCloud云开发

uniCloud概述 uniCloud 是 DCloud 联合阿里云、腾讯云、支付宝云&#xff0c;为开发者提供的基于 serverless 模式和 js 编程的云开发平台。 uniCloud 的 web控制台地址&#xff1a;https://unicloud.dcloud.net.cn 文档&#xff1a;https://doc.dcloud.net.cn/uniCloud/ un…...

智能扫地机,让生活电器更加便民-NV040D扫地机语音方案

一、语音扫地机开发背景&#xff1a; 随着人工智能和物联网技术的飞速发展&#xff0c;智能家居设备已成为现代家庭不可或缺的一部分。其中&#xff0c;扫地机作为家庭清洁的重要工具&#xff0c;更是得到了广泛的关注和应用。 然而&#xff0c;传统的扫地机在功能和使用上仍存…...

【后端面试题】【中间件】【NoSQL】ElasticSearch索引机制和高性能的面试思路

Elasticsearch的索引机制 Elasticsearch使用的是倒排索引&#xff0c;所谓的倒排索引是相对于正排索引而言的。 在一般的文件系统中&#xff0c;索引是文档映射到关键字&#xff0c;而倒排索引则相反&#xff0c;是从关键字映射到文档。 如果没有倒排索引的话&#xff0c;想找…...

【漏洞复现】时空智友ERP updater.uploadStudioFile接口处存在任意文件上传

0x01 产品简介 时空智友ERP是一款基于云计算和大数据技术的企业资源计划管理系统。该系统旨在帮助企业实现数字化转型&#xff0c;提高运营效率、降低成本、增强决策能力和竞争力&#xff0c;时空智友ERP系统涵盖了企业的各个业务领域&#xff0c;包括财务管理、供应链管理、生…...

[leetcode hot 150]第五百三十题,二叉搜索树的最小绝对差

题目&#xff1a; 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝对值。 解析&#xff1a; minDiffInBST 方法是主要方法。创建一个 ArrayList 来存储树的节点值。inorderTrave…...

【Docker】可视化平台Portainer

文章目录 Portainer的特点Portainer的安装步骤注意事项 Docker的可视化工具Portainer是一个轻量级的容器管理平台&#xff0c;它为用户提供了一个直观的图形界面来管理Docker环境。以下是关于Portainer的详细介绍和安装步骤&#xff1a; Portainer的特点 轻量级&#xff1a;P…...

MySQL高级-MVCC-原理分析(RR级别)

文章目录 1、RR隔离级别下&#xff0c;仅在事务中第一次执行快照读时生成ReadView&#xff0c;后续复用该ReadView2、总结 1、RR隔离级别下&#xff0c;仅在事务中第一次执行快照读时生成ReadView&#xff0c;后续复用该ReadView 而RR 是可重复读&#xff0c;在一个事务中&…...

压力测试Monkey命令参数和报告分析

目录 常用参数 -p <测试的包名列表> -v 显示日志详细程度 -s 伪随机数生成器的种子值 --throttle < 毫秒> --ignore-crashes 忽略崩溃 --ignore-timeouts 忽略超时 --monitor-native-crashes 监视本地崩溃代码 --ignore-security-exceptions 忽略安全异常 …...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

实战设计模式之模板方法模式

概述 模板方法模式定义了一个操作中的算法骨架&#xff0c;并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下&#xff0c;重新定义算法中的某些步骤。简单来说&#xff0c;就是在一个方法中定义了要执行的步骤顺序或算法框架&#xff0c;但允许子类…...

Linux操作系统共享Windows操作系统的文件

目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项&#xff0c;设置文件夹共享为总是启用&#xff0c;点击添加&#xff0c;可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download&#xff08;这是我共享的文件夹&#xff09;&…...