Linux命令更新-Vim 编辑器

news2024/9/22 10:03:11

简介

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.coloradmin.cn/o/1926308.html

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

相关文章

QT控件篇三

一、微调框 微调框(QSpinBox)是一个常用的Qt控件,允许用户通过增加或减少值来输入数字。分为两种, 整型-QSpinBox 浮点 QDoubleSpinBoxQSpinBox(微调框)的 setSingleStep 函数可以用来设置每次调整的步长(…

Kafka基础入门-代码实操

Kafka是基于发布/订阅模式的消息队列,消息的生产和消费都需要指定主题,因此,我们想要实现消息的传递,第一步必选是创建一个主题(Topic)。下面我们看下在命令行和代码中都是如何创建主题和实现消息的传递的。…

TDesign组件库日常应用的一些注意事项

【前言】Element(饿了么开源组件库)在国内使用的普及率和覆盖率高于TDesign-vue(腾讯开源组件库),这也导致日常开发遇到组件使用上的疑惑时,网上几乎搜索不到其文章解决方案,只能深挖官方文档或…

Python编程工具PyCharm和Jupyter Notebook的使用差异

在编写Python程序时需要用到相应的编程工具,PyCharm和Jupyter Notebook是最常用2款软件。 PyCharm是很强大的综合编程软件,代码提示、代码自动补全、语法检验、文本彩色显示等对于新手来说实在太方便了,但在做数据分析时发现不太方便&#xf…

UGUI优化篇(更新中)

UGUI优化篇 1. 基础概念2. 重要的类1. MaskableGraphic类继承了IMaskable类2. 两种遮罩的实现区别RectMask2DMask 3. 渲染部分知识深度测试深度测试的工作原理 渲染队列透明物体在渲染时怎么处理为什么透明效果会造成性能问题 1. 基础概念 所有UI都由网格绘制的如image由两个三…

成为CMake砖家(2): macOS创建CMake本地文档的app

大家好,我是白鱼。 使用 CMake 的小伙伴, 有的是在 Windows 上, 还有的是在 macOS 上。之前咱们讲了 windows 上查看 cmake 本地 html 文档的方式, 这篇讲讲 macOS 上查看 cmake 本地 html 文档的方法。 1. 问题描述 当使用 CMa…

数模·图论

matlab中图的表示 顶点集权值集的形式 s是源点,t是终点,w是对应的权值 调用graph(s,t,w)作为参数创建图 调用plot函数绘图plot(G,EdgeLabel,G.Edges.Weight,LineWidth,2) 设置x和y的坐标范围set(gca,XTick,[],YTick,[]) s[1 2 3]; t[4 1 2]; w[5 2 6]; …

程序包不存在【java: 程序包org.springframework.boot不存在】

1、问题提示:java: 程序包org.springframework.boot不存在 注意:已经下载好了程序包,就是提示不存在 2、解决办法

一个开源完全免费的无损视频或音频的剪切/裁剪/分割/截取和视频合并工具

大家好,今天给大家分享一款致力于成为顶尖跨平台FFmpeg图形用户界面应用的软件工具LosslessCut。 LosslessCut是一款致力于成为顶尖跨平台FFmpeg图形用户界面应用的软件工具,专为实现对视频、音频、字幕以及其他相关媒体资产的超高速无损编辑而精心打造。…

《后端程序猿 · EasyPOI 导入导出》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

蓝桥杯嵌入式第十五届模拟考试3解析

1 题目 2 程序 /* USER CODE BEGIN PTD */ char buf1[20],buf2[20],buf3[20],buf4[20],buf5[20],buf6[20],buf7[20],buf8[20],buf9[20]; struct keys {int step;int length;int state; }key[5]; int display; double v1,v2; int t; double v1l1.2,v1u2.2,v2l1.4,v2u3.0; dou…

深度学习复盘与论文复现D

文章目录 一、新环境搭建与适应1、easy_install和pip的安装使用2、关于安装包超时的解决方案3、brew安装包安装4、使用新环境运行以前项目5、解决win的pycharm修改内存后无法启动 二、Dataset 数据读取问题1、Lightning Torch 读取数据2、Pytorch的DataLoader数据读取机制3、Py…

Dify中的经济索引模式实现过程

当索引模式为经济时,使用离线的向量引擎、关键词索引等方式,降低了准确度但无需花费 Token。 一.提取函数**_extract** 根据不同文档类型进行内容的提取: def _extract(self, index_processor: BaseIndexProcessor, dataset_document: Data…

力扣经典题目之->移除值为val元素的讲解,的实现与讲解

一:题目 博主本文将用指向来形象的表示下标位的移动。 二:思路 1:两个整形,一个start,一个end,在一开始都 0,即这里都指向第一个元素。 2:在查到val之前,查一个&…

C语言 ——— 将一句英语短句中的单词进行倒置

目录 题目要求 代码实现 题目要求 将一句英语短句中的单词进行倒置&#xff0c;标点符号不倒置 如&#xff1a; 输入&#xff1a;"I like chongqing very much," 输出&#xff1a;"much, very chongqing like I" 代码实现 #include<stdio.h> #i…

c#与欧姆龙PLC通信——如何更改PLC的IP地址

前言 我们有时候需要改变欧姆龙Plc的ip地址,下图有两种更改方式,一种是已知之前Plc设置的Ip地址,还有一种是之前不知道Pl的Ip地址是多少,下面分别做介绍。 1、已知PLC的IP地址的情况下更改地址 假设已知PLC的Ip地址,比如本文中PLC的IP为192.168.1.2,我首先将电脑的IP地…

搭建调用链监控Zipkin和Sleuth

项目环境: win7、jdk8 1、添加依赖&#xff0c;添加了spring-cloud-starter-zipkin会自动导入Sleuth <!--Sleuth&#xff0c;zipkin--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zipkin</…

安卓onNewIntent 什么时候执行

一.详细介绍 onNewIntent 方法 onNewIntent 是 Android 中 Activity 生命周期的一部分。它在特定情况下被调用&#xff0c;主要用于处理新的 Intent&#xff0c;而不是创建新的 Activity 实例。详细介绍如下&#xff1a; 使用场景 singleTop 启动模式&#xff1a; 如果一个 Ac…

python+mysql图书管理系统,谈谈思路及实现代码

&#x1f3c6;本文收录于《CSDN问答解答》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

【链表】算法题(一) ---- 力扣 / 牛客

一、移除链表元素 移除链表中值为val的元素&#xff0c;并返回新的头节点 思路&#xff1a; 题目上这样说&#xff0c;我们就可以创建一个新的链表&#xff0c;将值不为val的节点&#xff0c;尾插到新的链表当中&#xff0c;最后返回新链表的头节点。 typedef struct ListNo…