Linux —— vim 编辑器

一、什么是vim

vim是一个功能强大、高度可定制的文本编辑器。以下是对vim编辑器的具体介绍:

  1. 历史背景:vim最初由Bram Moolenaar在1991年开发,作为vi编辑器的增强版,增加了许多新的特性和改进。它继承了vi的基本编辑功能和键盘快捷键,同时引入了多级撤销、语法高亮、自动缩进等现代编辑器特性。

  2. 模式系统:vim拥有多种操作模式,包括普通模式(Normal mode)、插入模式(Insert mode)和可视模式(Visual mode)等。用户可以根据需要在不同模式间切换,以实现高效的文本编辑。例如,在普通模式下,用户可以浏览文件、执行命令;在插入模式下,用户可以输入文本;在可视模式下,用户可以进行文本选择和操作。

  3. 定制性:vim支持高度定制化,用户可以通过修改.vimrc配置文件来调整编辑器的行为,如设置快捷键、更改配色方案、安装插件等。这使得vim能够适应不同用户的工作流程和喜好,成为一个灵活且强大的编辑工具。

  4. 跨平台性:vim支持多种操作系统,包括Windows、Mac和各种Linux发行版。无论使用哪种操作系统,用户都可以使用相同的Vim技巧进行文本编辑,实现跨平台的一致性和便利性。

二、vim之间的转换

三、命令模式

(一)、基本操作

  1. 移动光标

    • h:向左移动光标一个字符。
    • j:向下移动光标一行。
    • k:向上移动光标一行。
    • l:向右移动光标一个字符。
    • w:向后移动到下一个单词的开头。
    • b:向前移动到上一个单词的开头。
    • e:移动到当前单词的末尾。
    • 0:移动到行首。
    • $:移动到行尾。
  2. 删除文本

    • x:删除光标所在位置的字符。
    • dd:删除整行。
    • dw:删除从光标位置到下一个单词开头的所有字符。
    • D:删除从光标位置到行末的所有字符。
  3. 复制文本

    • yy:复制当前行。
    • yw:复制从光标位置到单词末尾的所有字符。
    • y$:复制从光标位置到行末的所有字符。
  4. 粘贴文本

    • p:在光标下方插入已复制或剪切的文本。
    • P:在光标上方插入已复制或剪切的文本。
  5. 替换文本

    • r:按需替换单个字符。
    • R:进入逐字符替换模式,按Esc退出。
  6. 撤销和重做

    • u:撤销最近的修改操作。
    • Ctrl + r:重做被撤销的操作。

(一)、高级操作

  1. 可视模式

    • v:按字符选择文本块。
    • V:按行选择文本块。
    • Ctrl + v:按块选择文本块。
  2. 命令行模式

    • ::进入命令行模式,用于执行各种命令。
  3. 宏录制

    • qa:开始录制宏。
    • q:结束录制宏。
    • @a:播放录制的宏。

四、编辑模式

(一)、进入和退出编辑模式

  1. 进入编辑模式:在命令模式下,可以通过按下i键进入编辑模式。此外,还可以使用a、o等键从不同位置开始插入文本。

  2. 退出编辑模式:按Esc键可以退出编辑模式,返回到命令模式。

五、末行模式

  1. 保存和退出

    • :w:保存文件。
    • :q:退出Vim。
    • :wq:保存并退出。
    • :q!:强制退出,放弃未保存的更改。
  2. 返回命令模式
    • 按Esc

六、案例1

1、使用vim创建anli1文件

2、输入内容,保存退出

3、进入anli1文件,设置编号

4、查看文件内容

按i进入编辑模式,编辑完按Esc进入然后按:进入末行模式,输入wq,回车,保存退出

进入anli1使用set nu查看序号

查看文件内容

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

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

相关文章

高效率同步降压转换器 - YB2416D: 实现快速充电和高效能供电的利器

概述: YB2416是一款输入耐压超过40V,在4.5V~30V输入电压条件下正常工作,并且能够实现精确恒压以及恒流的同步降压型DC-DC转换器。 内部集成80m2的上管和40m2的下管,无需外部肖特基二极管,可连续输出3A电流。输出3A电流时系统转换…

Repo管理

文章目录 前言Repo介绍清单仓库清单仓库的组成 初始化Repo同步远程仓库Repo实际应用 前言 我们知道,Git是用来管理某一个仓库,那当一个项目用到了多个仓库时,怎么来同步管理这些仓库呢?这个时候就可以引入Repo管理。 Repo介绍 …

神经网络的起源与工作原理

神经网络起源:一个生物神经网络是由一组化学上相连或功能上相关的神经元组成。一个神经元可能与许多其他神经元相连,网络中的神经元和连接的总数可能很广泛。连接,称为突触,通常是从轴突到树突形成的,尽管树突和其他连…

Qwen2.5-7B-Instruct vLLM 部署调用

Qwen2.5-7B-Instruct vLLM 部署调用 vLLM 简介 vLLM 框架是一个高效的大语言模型推理和部署服务系统,具备以下特性: 高效的内存管理:通过 PagedAttention 算法,vLLM 实现了对 KV 缓存的高效管理,减少了内存浪费&…

解决 Mac(M1/M2)芯片,使用node 14版本

前言 nvm 在安装 Node.js v14.21.3 时,报错: nvm install 14 Downloading and installing node v14.21.3... Downloading https://nodejs.org/dist/v14.21.3/node-v14.21.3-darwin-arm64.tar.xz... curl: (56) The requested URL returned error: 404Bin…

TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面

前言 前篇文章使用Tesseract进行图片文字识别介绍了如何安装TesseractOCR与TesseractOCR的命令行使用。但在日常使用过程中,命令行使用还是不太方便的,因此今天介绍一下如何使用WPF/C#构建TesseractOCR简单易用的用户界面。 普通用户使用 参照上一篇教…

车载ADB:让汽车更智能的桥梁

随着科技的不断进步,汽车行业也在迅速迈向智能化。车载Android系统(通常称为Android Auto)正在变得越来越流行,而Android Debug Bridge (ADB) 作为连接和调试这些系统的桥梁,也变得尤为重要。在本文中,我们…

【ETCD】【源码阅读】configurePeerListeners() 函数解析

configurePeerListeners 是 ETCD 的一个核心函数,用于为集群中节点之间的通信配置监听器(Peer Listener)。这些监听器主要负责 Raft 协议的消息传递、日志复制等功能。函数返回一个包含所有监听器的列表。 函数签名 func configurePeerList…

uniapp改成用vue起项目

目的:让项目按照vue的打包流程跑流水线 1.按照uniapp官网教程执行 2.执行第二条命令时报错 ERROR Failed to get response from true/vue-cli-version-marker 3.解决方式 报错可能跟yarn有关,然后切换成npm 找到自己本地电脑的这个文件 按照截图修…

装饰器模式(Decorator Pattern)

装饰器模式(Decorator Pattern) 定义 装饰器模式是一种结构性设计模式,通过 动态组合对象 的方式,为对象添加额外功能,而无需修改原有类。 装饰器模式的核心思想 对象增强:在现有类的基础上动态添加功能&…

【SH】微信小程序调用EasyDL零门槛AI开发平台的图像分类研发笔记

文章目录 微信小程序字符串字符串模板字符串拼接 上传图片编写JS代码编写wxml代码编写wxss代码 GET请求测试编写测试代码域名不合法问题 GET和POST请求测试编写JS代码编写wxml代码编写wxss代码 效果展示 微信小程序字符串 字符串模板 这是ES6引入的特性,允许你通过…

【C#】int? , C# 中的可空类型(Nullable Types)

在 C# 中,问号(?)用于表示可空类型(nullable types)。在你的代码中,int? 表示的是可空的整数类型,也就是可以存储 int 类型的值,也可以存储 null。具体来说: int? 详…

[小白系列]Ubuntu安装教程-安装prometheus和Grafana

Docker安装prometheus 拉取镜像 docker pull prom/prometheus 配置文件prometheus.yml 在/data/prometheus/建立prometheus.yml配置文件。(/data/prometheus/可根据自己需要调整) global:scrape_interval: 15s # By default, scrape targets ev…

在Spring Boot项目中整合Redis:高效数据存储与缓存的最佳实践

目录 1. 引入依赖 2. 创建序列化配置类 2.1 序列化的选择 3. 配置YAML文件 3.1 连接池的配置 4. 使用Redis 4.1 复杂数据类型的存储 4.2 列表、集合和哈希的使用 4.2.1 列表示例 4.2.2 集合示例 4.2.3 哈希示例 5. 处理事务和管道 5.1 事务示例 5.2 管道示例 6…

嵌入式硬件设计 — 智能设备背后的隐形架构大师

目录 引言 一、嵌入式硬件设计概述 (一)需求分析 (二)硬件选型 (三)电路设计 (四)PCB 制作与焊接 (五)硬件调试与测试 (六)软…

调度系统:使用 Airflow 对 Couchbase 执行 SQL 调度时的潜在问题

使用 Airflow 对 Couchbase 执行 SQL 调度时,通常情况下不会直接遇到与 Couchbase 分布式特性相关的异常,但在某些特定情境下,可能会出现一些与分布式环境、调度和数据一致性相关的潜在问题。以下是一些可能会遇到的问题和建议的解决方案&…

[大数据]Hudi编译集成

1. Hudi概述 1.1 Hudi简介 What is Apache Hudi Apache Hudi is the next generation streaming data lake platform. Apache Hudi brings core warehouse and database functionality directly to a data lake. Hudi provides tables, transactions, efficient upserts/dele…

windows下 mysql开启 binlog日志

一、查看是否开启 binlog -- 方式一 show binary logs;-- 方式二 show VARIABLES like log_bin 说明没有开启 方式一 :you are not using binary logging 方式二:log_bin off 二、编辑 my.ini 配置文件 默认安装地点位于:C:\ProgramDat…

本题要求采用选择法排序,将给定的n个整数从大到小排序后输出。

#include <stdio.h> #define MAXN 10 int main() { int i, index, k, n, temp; int a[MAXN]; scanf("%d", &n); for (i 0; i < n; i) { scanf("%d", &a[i]); } // 外层循环控制排序轮数&#xff0c;一共需要n-1轮 for (k 0; k < n…

Vue.js的生命周期

Vue.js 是一个构建用户界面的渐进式框架&#xff0c;它提供了一个响应式和组件化的方式来构建前端应用。了解 Vue 的生命周期对于开发者来说至关重要&#xff0c;因为它可以帮助我们更好地控制组件的状态和行为。本文将详细介绍 Vue 的生命周期&#xff0c;并提供相应的代码示例…