Linux命令更新-Vim 编辑器

简介

Vim 是 Linux 系统中常用的文本编辑器,功能强大、可扩展性强,支持多种编辑模式和操作命令,被广泛应用于程序开发、系统管理等领域。

1. Vim 命令模式

Vim 启动后默认进入命令模式,此时键盘输入的命令将用于控制编辑器本身,而不是直接编辑文本。命令模式下常用的命令包括:

  • 光标移动:

  • h: 左移一个字符

  • l: 右移一个字符

  • j: 下移一行

  • k: 上移一行

  • 0: 移至行首

  • $: 移至行尾

  • gg: 移至文件首行

  • G: 移至文件尾行

  • Ctrl+v: 进入可视化模式,可以使用方向键移动光标

  • 删除操作:

  • x: 删除当前光标所在字符

  • dd: 删除当前行

  • D: 删除从当前光标到行尾的所有内容

  • dw: 删除从当前光标到下一个单词末尾的所有内容

  • d$: 删除从当前光标到行尾的所有内容

  • 复制操作:

  • y: 复制当前光标所在字符

  • yy: 复制当前行

  • Y: 复制从当前光标到文件尾部的所有内容

  • yw: 复制从当前光标到下一个单词末尾的所有内容

  • y$: 复制从当前光标到行尾的所有内容

  • 粘贴操作:

  • p: 粘贴上次复制的内容

  • 撤销/重做:

  • u: 撤销上次操作

  • Ctrl+r: 重做上次撤销的操作

  • 其他命令:

  • :q: 退出 Vim 编辑器

  • :wq: 保存并退出 Vim 编辑器

  • :set nu: 显示行号

  • :set hlsearch: 高亮显示搜索结果

  • /pattern: 搜索文本内容

  • n: 向下查找下一个匹配项

  • N: 向上查找上一个匹配项

  • :w filename: 将当前文件内容保存为指定文件名

2. Vim 编辑模式

Vim 提供多种编辑模式,用于输入文本和进行编辑操作。常见模式包括:

  • 插入模式:

  • 按下 iaOo 等键进入插入模式,此时键盘输入的内容将直接插入文本。

  • 按下 Esc 键退出插入模式。

  • 替换模式:

  • 按下 rR 键进入替换模式,此时键盘输入的内容将替换当前光标所在字符或文本。

  • 按下 Esc 键退出替换模式。

  • 底线模式:

  • 按下 : 键进入底线模式,此时可以在命令行输入 Vim 命令。

  • 按下 Enter 键执行命令。

3. Vim 命令运维案例

案例一:修改配置文件

假设您需要修改 /etc/nginx/nginx.conf 文件中的配置项。

步骤:

  1. 打开配置文件:
vim /etc/nginx/nginx.conf
  1. 进入插入模式:
i
  1. 将需要修改的配置项修改为所需值。

  2. 保存并退出 Vim 编辑器:

:wq

案例二:搜索并替换文本

假设您需要在所有 PHP 文件中搜索并替换字符串 "old_value""new_value"

步骤:

  1. 打开所有 PHP 文件:
vim *.php
  1. 进入命令模式:
Esc
  1. 输入搜索命令:
/old_value
  1. 按下 nN 键查找下一个或上一个匹配项。

  2. 输入替换命令:

:s/old_value/new_value/g
  1. 保存并退出 Vim 编辑器:
:wq

案例三:使用宏命令进行重复操作

假设您需要多次删除当前行并将其内容插入到下一行。

步骤:

  1. 进入命令模式:
Esc
  1. 录制宏命令:
q
  1. 执行宏命令:
ddp
  1. 重复执行宏命令:
@10

解释:

  • q:开始录制宏命令

  • dd: 删除当前行

  • p: 将删除的内容粘贴到下一行

  • q: 结束录制宏命令

  • @10: 重复执行上次录制的宏命令 10 次

案例四:使用正则表达式进行复杂查找/替换

假设您需要在所有 CSS 文件中查找并替换所有匹配正则表达式 #\{([\w-]+)\} 的文本,将其替换为 \1.important

步骤:

  1. 打开所有 CSS 文件:
vim *.css
  1. 进入命令模式:
Esc
  1. 输入搜索命令:
/\#\{([\w-]+)\}/
  1. 输入替换命令:
:s/\#\{([\w-]+)\}/\1.important/g
  1. 保存并退出 Vim 编辑器:
:wq

解释:

  • #\{([\w-]+)\}:正则表达式,用于匹配以 # 开头、后面跟一个由字母、数字和下划线组成的单词、再跟一个 { 的文本。

  • \1:反向引用,表示匹配的第一个捕获组,即单词部分。

  • .important:替换文本,将匹配的单词后面追加 .important

  • g:全局替换,表示替换所有匹配的文本。

案例五:比较两个文件

假设您需要比较两个文件 /file1.txt/file2.txt 的差异。

步骤:

  1. 打开两个文件:
vim -d /file1.txt /file2.txt
  1. 进入比较模式:
:diffsplit
  1. 左右移动光标可以查看两个文件的差异。

  2. 按下 q 键退出比较模式。

4. Vim 高级特性

Vim 提供了丰富的功能和插件,可以满足不同用户的各种需求。以下是一些 Vim 的高级特性:

  • 可视化模式: 进入可视化模式后,可以使用方向键选择要操作的文本块,然后可以使用 dyp 等命令进行删除、复制、粘贴等操作。

  • 折叠: 可以将代码块折叠起来,隐藏不必要的部分,只显示重要内容。

  • 语法高亮: Vim 可以根据不同文件类型的语法规则对文本进行高亮显示,方便阅读和理解代码。

  • 代码补全: Vim 可以根据输入的文本内容提供建议,帮助用户快速完成代码输入。

  • 自定义配置: Vim 可以通过配置文件进行个性化配置,例如设置按键映射、配色方案等。

5. Vim 插件

Vim 拥有丰富的插件生态,可以扩展 Vim 的功能,满足各种使用需求。常用的插件管理器包括:

  • Pathogen: 传统插件管理器,使用简单。

  • Vundle: 功能强大,支持多种插件管理功能。

  • Plug: 轻量级插件管理器,易于使用。

6. Vim 学习资源

  • Vim 中文文档:https://yianwillis.github.io/vimcdoc/doc/usr_toc.html

  • Vim 在线教程:https://www.vim-adventures.com/

注意

  • 本文档仅介绍了 Vim 的基本使用方法和常见运维案例,并未涵盖所有功能和特性。

  • Vim 的学习需要循序渐进,建议从基础知识开始学习,逐步掌握高级特性。

  • 在使用 Vim 进行实际操作时,请注意备份文件,以免造成数据丢失。

总结

Vim 是一款功能强大、可扩展性强的文本编辑器,在 Linux 系统中得到了广泛应用。掌握 Vim 的使用技巧,可以提高工作效率和生产力。

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

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

相关文章

Android ImageDecoder把瘦高/扁平大图相当于fitCenter模式decode成目标小尺寸Bitmap,Kotlin

Android ImageDecoder把瘦高/扁平大图相当于fitCenter模式decode成目标小尺寸Bitmap,Kotlin val sz Size(MainActivity.SIZE, MainActivity.SIZE)val src ImageDecoder.createSource(mContext?.contentResolver!!, uri)val bitmap ImageDecoder.decodeBitmap(sr…

【Playwright+Python】系列 Pytest 插件在Playwright中的使用

一、命令行使用详解 使用 Pytest 插件在Playwright 中来编写端到端的测试。 1、命令行执行测试 pytest --browser webkit --headed 2、使用 pytest.ini 文件配置 内容如下: [pytest] # Run firefox with UIaddopts --headed --browser firefox效果&#xff1…

云计算【第一阶段(31)】PXE高效批量网络装机

一、系统安装 1.1、系统装机的三种引导方式 1. 硬盘 2. 光驱( u 盘) 3. 网络启动 pxe 1.2、系统安装过程 加载boot loader Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映…

【CSS in Depth 2 精译】3.1.2 逻辑属性 + 3.1.3 用好逻辑属性的简写形式

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…

深入探讨:CPU问题的深度分析与调优

引言 你是否曾经遇到过这样的情况:系统运行突然变慢,用户抱怨不断,检查后发现CPU使用率居高不下?这时候,你会如何解决?本文将详细解析CPU问题的分析与调优方法,帮助你在面对类似问题时游刃有余。 案例分析:一次CPU性能瓶颈的解决过程 某知名互联网公司在一次促销活动…

《Python数据科学之一:初见数据科学与环境》

《Python数据科学之一:初见数据科学与环境》 欢迎来到“Python数据科学”系列的第一篇文章。在这个系列中,我们将通过Python的镜头,深入探索数据科学的丰富世界。首先,让我们设置和理解数据科学的基本概念以及在开始任何数据科学项…

每日Attention学习11——Lightweight Dilated Bottleneck

模块出处 [TITS 23] [link] [code] Lightweight Real-Time Semantic Segmentation Network With Efficient Transformer and CNN 模块名称 Lightweight Dilated Bottleneck (LDB) 模块作用 改进的编码器块 模块结构 模块代码 import torch import torch.nn as nn import to…

使用DeepWalk 和Word2Vec实现单词Embedding

0、准备“边”数据集Wiki_edgelist import pandas as pddf pd.read_csv(./data/wiki/Wiki_edgelist.txt, sep , headerNone, names["source", "target"]) df.head() 1、读入 起点-终点 边数据,构建图 # 1、读入 起点-终点 边数据&#xff0c…

Docker入门(清晰认识)

为什么学习Docker? 再学完linux后,我们需要远程对Linux虚拟机下载一些软件,如果在Linux里直接用命令下载软件会十分麻烦,所以我们需要通过使用Docker将软件直接下载到Docker中,这样更方便下载和卸载等操作。 一张图弄…

javaScript的面试重点--预解析

目录 一.前言 二.预解析案例 一.前言 关于预解析,我们通过今天学习就能够知道解析器运行JS分为哪两步;能够说出变量提升的步骤和运行过程;能够说出函数提升的步骤和运行过程。 二.预解析案例 预解析,简而言之,也就是…

7.13实训日志

上午 学习网络安全的过程中,我们深入了解了网络的不同层面和技术,从表层网络到深网再到暗网,以及涉及的产业分类和技术工具。这些知识不仅帮助我们理解网络的复杂性,还揭示了如何应对和防范各种网络威胁。 首先,我们…

简易秒表的实现

目录 描述 输入描述: 输出描述: 参考代码 描述 请编写一个模块,实现简易秒表的功能:具有两个输出,当输出端口second从1-60循环计数,每当second计数到60,输出端口minute加一,一直…

007-端口隔离

端口隔离配置 端口隔离简介 为了实现报文之间的二层隔离,可以将不同的端口加入不同的VLAN,但会浪费有限的VLAN资源。采用端口隔离特性,可以实现同一VLAN内端口之间的隔离。 设备支持以下方式进行端口隔离: 基于隔离组的端口隔…

【数据结构】顺序表的应用

目录 一.引言 二.顺序表概念 三.顺序表的实现 1.定义顺序表 2.顺序表初始化 ​编辑 3.检查空间,如果满了,进行增容 4.顺序表尾插 5.顺序表尾删 6.顺序表头插 7.顺序表头删 ​编辑 8.顺序表查找 9.顺序表在pos位置插入x 10.顺序表删…

C语言丢失精度 如何实现高精度计算

(1)int 类型举例 int :占4个字节,也就是32位,及最大值是2^32-11024*1024*1024*4-14294967295 以上说法错误,因为Int是有符号类型整数,所以最高位是符号位,及int的最大值应该是2^31…

【Java】链表的头插法和尾插法

头插法 头插法就是在已有的节点的前面插入新节点 如何实现 (1)先定义一个节点类ListNode,里面有value值和地址 public class ListNode {int value;ListNode next;public ListNode(int value){this.value value;}Overridepublic String t…

让我们一起来看看这些强大的中国汽车品牌如何勇攀巅峰!

咱们中国的汽车品牌,就是这么牛!你知道吗?他们已经悄悄崛起,一步步向着更广阔的海外市场进军了。尽管这个过程可能有点坎坷,但是“勇敢”始终是他们前行的动力,推动着他们不断向前,打造属于我们…

AGI 之 【Hugging Face】 的【文本摘要】的 [评估PEGASUS ] / [ 微调PEGASUS ] / [生成对话摘要] 的简单整理

AGI 之 【Hugging Face】 的【文本摘要】的 [评估PEGASUS ] / [ 微调PEGASUS ] / [生成对话摘要] 的简单整理 目录 AGI 之 【Hugging Face】 的【文本摘要】的 [评估PEGASUS ] / [ 微调PEGASUS ] / [生成对话摘要] 的简单整理 一、简单介绍 二、文本摘要 三、在CNN/Daily…

秋招突击——7/9——MySQL索引的使用

文章目录 引言正文B站网课索引基础创建索引如何在一个表中查看索引为字符串建立索引全文索引复合索引复合索引中的排序问题索引失效的情况使用索引进行排序覆盖索引维护索引 数据库基础——文档资料学习整理创建索引删除索引创建唯一索引索引提示复合索引聚集索引索引基数字符串…

C#基于任务的异步模式(TAP)

1、C#异步模式分类 基于任务的异步模式(TAP) 基于事件的异步模式(EAP)和异步编程模型模式(APM) 2、基于任务的异步模式(TAP) 基于任务的异步模式(TAP)用单个方…