Linux Vim全面教程

devtools/2024/9/19 13:01:44/ 标签: linux, vim, 运维

引言

Vim,源自Vi IMproved,是一个高度可配置的文本编辑器,用于创建和修改任何类型的文本。它是自由软件,可在大多数Unix系统和Linux发行版中找到。

Vim的模式

Vim有多种模式,但主要分为以下几种:

  • 普通模式(Normal Mode):默认模式,用于移动光标和执行命令。
  • 插入模式(Insert Mode):用于插入文本。
  • 可视模式(Visual Mode):用于选择文本块。
  • 命令行模式(Command-line Mode):用于输入命令,如查找、替换等。

Vim基础

启动Vim

在终端中输入 vim 加上文件名,例如 vim example.txt

退出Vim

  • :q - 退出Vim。
  • :wq - 保存并退出。
  • :q! - 强制退出不保存。

插入文本

  • i - 进入插入模式在光标前插入。
  • I - 进入插入模式并在行首插入。
  • a - 进入插入模式并在光标后插入。
  • A - 进入插入模式并在行尾插入。

移动光标

  • hjkl - 分别代表左、下、上、右移动。
  • G - 移动到文件末尾。
  • gg - 移动到文件开头。

删除和修改

  • dd - 删除(cut)当前行。
  • u - 撤销。
  • Ctrl + r - 重做。

复制和粘贴

  • yy - 复制当前行。
  • p - 粘贴到光标后。

查找和替换

  • /word - 查找"word"。
  • :%s/old/new/g - 替换文件中所有的"old"为"new"。

分屏

  • :split:sp - 水平分割窗口。
  • :vsplit:vsp - 垂直分割窗口。

高级技巧

模式间快速切换

  • Q - 从普通模式切换到可视模式。
  • Ctrl + [ - 从插入模式或命令行模式返回到普通模式。

多光标编辑

  • 在可视模式下,使用 O 选择行首,o 选择行尾。

宏录制

  • q<letter> - 开始录制宏。
  • q - 结束录制。
  • @<letter> - 执行宏。

正则表达式

Vim支持正则表达式,用于复杂的查找和替换。

自定义快捷键

通过 Vim 脚本自定义快捷键和命令。

插件管理

使用插件如 Vim-plug 来扩展 Vim 的功能。

Vim配置

配置文件

Vim的配置文件是 ~/.vimrc,在其中可以设置快捷键、插件和其他配置。

语法高亮

启用语法高亮以改善代码可读性。

缩进

根据编程语言设置自动缩进。

状态栏

自定义状态栏显示的信息。

结语

Vim是一个功能强大的文本编辑器,通过熟练掌握其使用,可以极大提高编辑效率。本教程覆盖了Vim的基础知识和一些高级特性,但Vim的世界远不止于此。推荐阅读官方文档 :help 来进一步深入学习。

参考文献

  • Vim官方文档:vim -h
  • Vimcasts.org:提供大量Vim教程和技巧。

请注意,Vim的学习曲线可能比较陡峭,但随着实践的增加,你将发现其强大的功能和灵活性。不要犹豫尝试不同的配置和插件,找到最适合你的工作流程。


http://www.ppmy.cn/devtools/58924.html

相关文章

数据库db文件损坏修复方法(sqlite3:database disk image is malformed)

参考博客&#xff1a; https://www.cnblogs.com/liuyangQAQ/p/18037546 sqlite3数据库提示database disk image is malformed 解决办法-CSDN博客 【SQL】sqlite数据库损坏报错&#xff1a;database disk image is malformed&#xff08;已解决&#xff09;-CSDN博客 一、第…

Perl 语言进阶学习

Perl 语言进阶学习 在掌握 Perl 的基础知识后&#xff0c;进一步学习 Perl 的高级特性和应用&#xff0c;将有助于提升编程效率和解决复杂问题的能力。本文将详细介绍 Perl 语言的高级功能、最佳实践以及实际应用案例。 目录 高级数据结构 多维数组复杂数据结构 引用与匿名数…

组合模式(大话设计模式)C/C++版本

组合模式 C #include <iostream> #include <list> using namespace std; // 公司类... 抽象或者接口 class Company { public:Company(string name){this->name name;}virtual void Add(Company *c) 0; // 增加virtual void Remove(Company *c) 0; // 移…

什么是面向对象编程

什么是面向对象编程&#xff1f;&#xff08;OOP&#xff09; ● 面向对象编程是一种基于对象概念的编程范式&#xff1b;&#xff08;所谓的编程范式&#xff0c;就是代码风格&#xff0c;我们“如何”编写和组织代码&#xff09;&#xff1b; ● 我们使用对象来模拟&#xf…

4. kvm存储虚拟化

kvm存储虚拟化 一、命令行工具管理虚拟磁盘1、查看虚拟磁盘2、添加磁盘3、删除磁盘 二、qcow2格式的磁盘文件1、创建磁盘文件2、差量镜像/快速创建虚机2.1 创建差量镜像2.2 准备配置文件2.3 创建虚拟机2.4 批量部署虚拟机 三、存储池 storage pool1、类型2、在线迁移2.1 规划后…

Python爬虫之路(2):爬天气情况

hello hello~ &#xff0c;这里是绝命Coding——老白~&#x1f496;&#x1f496; &#xff0c;欢迎大家点赞&#x1f973;&#x1f973;关注&#x1f4a5;&#x1f4a5;收藏&#x1f339;&#x1f339;&#x1f339; &#x1f4a5;个人主页&#xff1a;绝命Coding-CSDN博客 &a…

国产精品ORM框架-SqlSugar详解 进阶功能 集成整合 脚手架应用 专题二

国产精品ORM框架-SqlSugar详解 SqlSugar初识 专题一-CSDN博客 sqlsugar 官网-CSDN博客 4、进阶功能 5、集成整合 6、脚手架应用 4、进阶功能 4.1、生命周期 Queryable 什么时候操作库 Queryable是一个引用类型 Queryable拷贝机制 4.2、执行Sql 方法列表 方法名 描述 返…

pytest系列——pytest_runtest_makereport钩子函数获取测试用例执行结果

前言 pytest测试框架提供的很多钩子函数方便我们对测试框架进行二次开发&#xff0c;可以根据自己的需求进行改造。 例如&#xff1a;钩子方法&#xff1a;pytest_runtest_makereport &#xff0c;可以更清晰的了解测试用例的执行过程&#xff0c;并获取到每个测试用例的执行…

简易限流实现

需求描述 写一个1秒两个的限流工具类&#xff0c;2r/s 使用semaphore 代码实现-类似令牌桶算法 public class LimitHelper {private int maxLimit;private Semaphore semaphore;private int timeoutSeconds;public LimitHelper(int maxLimit, int timeoutSeconds) {this.max…

单网口设备的IP地址识别-还原-自组网

1.如果知道该设备所在网段&#xff1a; 此时可以使用nmap工具&#xff0c;进行网段扫描&#xff1a; nmap -sn 192.168.0.0/24 256个地址的子网10秒就能扫描一轮。关掉设备&#xff0c;打开设备&#xff0c;diff&#xff0c;基本就可以定位所要找到目标设备的IP 2.如果不知道…

Spark SQL中的正则表达式应用

正则表达式是一种强大的文本处理工具,在Spark SQL中也得到了广泛支持。本文将介绍Spark SQL中使用正则表达式的主要方法和常见场景。 目录 1. 正则表达式函数1.1 regexp_extract1.2 regexp_replace1.3 regexp_like 2. 在WHERE子句中使用正则表达式3. 在GROUP BY中使用正则表达…

晏子春秋-读书笔记二

“橘生淮南则为橘&#xff0c;生于淮北则为枳&#xff0c;叶徒相似&#xff0c;其实味不同。所以然者何&#xff1f;水土异也。今民生长于齐不盗&#xff0c;入楚则盗&#xff0c;得无楚之水土使民善盗耶&#xff1f;” 这段话的大意是说&#xff0c;橘树生长在淮河以南就是甜美…

python为什么慢?(自用)

《Cython系列》1. Cython 是什么&#xff1f;为什么要有 Cython&#xff1f;为什么我们要用 Cython&#xff1f; - 古明地盆 - 博客园 (cnblogs.com) 古明地盆的主页 - 博客园 (cnblogs.com) 我原本认为&#xff0c;python慢的原因是“逐行解释程序并执行”&#xff0c;那么我…

【ELK】filebeat 和logstash区别

Filebeat 和 Logstash 都是 Elastic Stack (也称为 ELK Stack) 的重要组件&#xff0c;用于日志数据的收集、处理和传输。它们有不同的功能和使用场景&#xff1a; Filebeat 角色: 轻量级日志收集器。功能: 从指定的日志文件中读取日志数据。可以从多个源&#xff08;如文件、…

记录自己Ubuntu加Nvidia驱动从入门到入土的一天

前言 记录一下自己这波澜壮阔的一天&#xff0c;遇到了很多问题&#xff0c;解决了很多问题&#xff0c;但是还有很多问题&#xff0c;终于在晚上的零点彻底放弃&#xff0c;重启windows。 安装乌班图 1.安装虚拟机 我开始什么操作系统的基础都没有&#xff0c;网上随便搜了…

SpringMVC简介

1、SpringMVC简介 1.1什么是MVC &#xff08;1&#xff09;MVC是一种软件架构的思想&#xff0c;将软件按照模型、视图、控制器来划分 M:Model&#xff0c;模型层&#xff0c;指工程中的JavaBean&#xff0c;作用是处理数据 JavaBean分为两类&#xff1a; 一类称为实体类Bea…

Linux C | 管道open打开方式

Linux C | 管道open打开方式 1.参考 1. 管道 2.现象 是的&#xff0c;这段代码在调用 open(AUDIOIN_FIFO, O_RDONLY) 时可能会被阻塞。原因是 FIFO&#xff08;命名管道&#xff09;在以只读模式打开时&#xff0c;如果没有其他进程以写模式打开该 FIFO&#xff0c;open 调用将…

嵌入式硬件电路常用设计软件

目录 1. Cadence Allegro 2. PADS 3. Altium Designer 4. Multisim 5. Protues 1. Cadence Allegro 功能&#xff1a; Cadence Allegro是Cadence公司推出的先进PCB&#xff08;Printed Circuit Board&#xff0c;印刷电路板&#xff09;设计布线工具&#xff0c;也是目前…

【Linux】WEB网站网络防火墙(WAF软件)Fail2ban:保护服务器免受恶意攻击的必备工具

随着互联网的迅速发展&#xff0c;服务器的安全性日益成为用户和管理员关注的焦点。恶意攻击者不断寻找机会侵入服务器&#xff0c;窃取敏感信息、破坏数据或者滥用系统资源。为了抵御这些威胁&#xff0c;许多安全工具应运而生&#xff0c;其中一款备受推崇的工具就是 Fail2ba…

关键路径-matlab

路径上边的数目称为路径长度 图的基本知识 求最短路径&#xff08;Dijkstra算法&#xff09; 2. 待继续尝试 ①Dijkstra ②floyd_all.m 一 二 ③ LeetCode [329. 矩阵中的最长递增路径]