秒变 Vim 高手:必学的编辑技巧与隐藏功能大揭秘

news2024/9/22 18:51:07

文章目录

  • 前言
  • 一、vi与vim
  • 二、Vim的三种模式
    • 1. 普通模式
    • 2. 插入模式
    • 3. 命令模式
  • 三、Vim中的查找与替换
    • 1. 查找
    • 2. 替换
  • 四、给Vim设置行号
    • 1. 临时显示行号
    • 2. 永久显示行号
  • 总结


前言

在Linux系统中,文本编辑器是开发者和系统管理员日常工作中的重要工具之一。其中,vi和vim是最常用的两个编辑器。本文将介绍vi和vim的基本区别,深入讲解vim的三种模式、常用操作,以及如何在命令模式下进行查找替换,最后会介绍如何在vim中显示行号。
在这里插入图片描述


一、vi与vim

vi (Visual Interface)Linux/Unix系统中内置的一个标准文本编辑器。虽然功能强大,但相对简洁,无法满足更高层次的编辑需求。vim (Vi IMproved) 是对vi的增强版,它在vi的基础上增加了许多功能,比如语法高亮、分屏操作、插件支持等。

vi和vim的区别:

  • 功能增强:vim支持语法高亮、插件、宏等功能,vi相对较为简陋。
  • 兼容性:vim完全兼容vi,因此使用vim进行简单的编辑工作与vi基本一致。
  • 可扩展性:vim支持丰富的扩展功能,用户可以根据需求安装插件。

如果你想使用vim,只需在终端输入vim命令。大多数现代的Linux发行版默认已安装vim,如果未安装可以通过以下命令安装:

sudo apt install vim  # 对于Debian/Ubuntu系统
sudo yum install vim  # 对于CentOS/Fedora系统

二、Vim的三种模式

Vim编辑器有三种主要的模式,每种模式都有其特定的操作方式:

  1. 普通模式 (Normal Mode):默认进入vim时所在的模式,主要用于浏览文件、删除、复制、粘贴等操作。
  2. 插入模式 (Insert Mode):允许用户输入和修改文本的模式。
  3. 命令模式 (Command Mode):用户可以执行文件保存、退出、查找、替换等操作。

1. 普通模式

在系统提示符后输入vim和想要编辑(或建立)的文件名,便可进入vim,如:
在这里插入图片描述
在这里插入图片描述

如果只输入vim,而不带文件名,也可以进入vim,相当于是使用帮助
在这里插入图片描述
在这里插入图片描述

进入vim之后,首先进入的就是普通模式,普通模式是vim的默认模式。在这个模式下,你可以通过移动光标、删除、复制和粘贴文本,还可以切换到其他模式。常见操作包括:

  • 移动光标:用hjkl分别移动光标到左、下、上、右
  • 删除操作:x删除光标下的字符,dd删除当前行
  • 复制与粘贴:yy复制当前行,p在光标之后粘贴

要回到普通模式,按下Esc键即可

2. 插入模式

在插入模式下,用户可以输入文本。进入插入模式的方法包括:
在这里插入图片描述

进入插入模式后,可以正常输入文本,编辑完成后按Esc返回到普通模式。
在这里插入图片描述

3. 命令模式

命令模式用于执行文件操作、查找替换等操作。进入命令模式的方法是在普通模式下按:,此时vim会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为命令模式的提示符,等待用户输入命令。
在这里插入图片描述
在命令模式下,常见操作有:

  • :w:保存
  • :w filename:另存为filename
  • :wq:保存退出
  • :wq filename:以filename为文件名保存后退出
  • :q!:不保存退出
  • :x:保存并退出,功能和:wq相同,其后可以跟文件名

通常退出vim命令为:wq:q!
在这里插入图片描述


三、Vim中的查找与替换

在命令模式下,vim提供了强大的查找与替换功能

1. 查找

首先按Esc键,进入命令模式;输入/?就可以进行查找了

例如:在一个文件中查找ll单词,然后在命令模式下输入:
/ll?ll
在这里插入图片描述

2. 替换

:[范围]s/查找内容/替换内容/[选项]

范围:指定替换的范围,比如%表示整个文件,1,10表示第1到第10行,不指定范围的话就是当前行
选项

  • g:全局替换,即每行中所有匹配的内容都替换
  • c:在替换前确认
  • i:忽略大小写

例子:

  1. 查找并替换当前行:
:s/old/new/g

这条命令会将当前行中的所有old替换为new
在这里插入图片描述

在这里插入图片描述

  1. 查找并替换整个文件:
:%s/old/new/g

这条命令会将文件中的所有old替换为new
在这里插入图片描述
在这里插入图片描述

  1. 全局替换并逐一确认:
:%s/old/new/gc

在替换前会逐个提示用户确认是否替换
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


四、给Vim设置行号

在编写代码时,行号通常非常重要,vim提供了显示行号的功能。可以通过以下两种方式在vim中显示行号:

1. 临时显示行号

在vim中输入以下命令可以临时显示行号,退出vim后行号设置会恢复默认状态:

:set number

在这里插入图片描述
要关闭行号显示,可以使用:

:set nonumber

在这里插入图片描述

2. 永久显示行号

如果你希望每次打开vim时都显示行号,可以通过vim ~/.vimrc命令编辑vim配置文件.vimrc,在其中添加以下内容:

set number

保存配置后,行号会永久生效


总结

通过本文,我们详细介绍了如何在Linux环境下使用Vim编辑器进行文本编辑,并深入探讨了Vim的三种模式及其各自的操作方式。文章从vi与vim的区别开始,逐步讲解了Vim的普通模式、插入模式、命令模式的使用方法,特别是在命令模式下如何进行查找和替换操作。我们还展示了如何通过命令或配置文件来为Vim添加行号功能。希望这篇文章能帮助你更好地掌握Vim编辑器,提高在Linux系统中编辑文本的效率。如果你有任何疑问或建议,欢迎在评论区留言讨论🌹

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

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

相关文章

DeepSeek 2.5本地部署的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…

想学习下Python和深度学习,Python需要学习到什么程度呢?

想要学习Python和深度学习,Python的学习程度需要达到能够熟练运用这门语言进行编程,并能够理解和实现深度学习模型的基本构建和训练过程。以下是一些推荐的书籍,可以帮助你系统地学习Python和深度学习: Python学习推荐书籍 《Py…

kubectl 执行一条命令之后发生了什么?

kubectl 是与 Kubernetes 集群交互的命令行工具,用户通过它可以对集群资源进行操作和管理。你有没有想过,当我们执行一条 kubectl 命令之后,背后都发生了什么? 详细过程 kubectl -> kube-api-server 根据通信类型&#xff0…

【大模型】AutoDL部署AI绘图大模型Stable Diffusion使用详解

目录 一、前言 二、AI绘图大模型概述 2.1 AI绘图大模型介绍 2.2 AI绘图大模型特点 2.3 AI绘图大模型优势 三、主流的AI绘图大模型介绍 3.1 Midjourney 3.1.1 Midjourney介绍 3.1.2 Midjourney功能特点 3.1.3 Midjourney使用场景 3.2 Stable Diffusion 3.2.1 Stable …

zynq的PS端mac与RTL8211F的连接要点

目录 1 VCCO_MIO12 PS_MIO_VREF3 PS的引脚4 RXDLY TXDLY5 ZYNQ的MAC可以调整延时吗 1 VCCO_MIO1 接1.8V 2 PS_MIO_VREF 接0.9V,可通过电阻分压 可通过电阻分压 3 PS的引脚 4 RXDLY TXDLY RXDLY RXD[0] TXDLY RXD[1] 与XC7Z020的PS端MAC连接,必须…

python画正方形、平行四边形、六边形、五角星、风车(四个半圆)

画正方形、平行四边形、六边形、五角星、风车(四个半圆) import turtle def square(side_length):"""正方形"""for _ in range(4):turtle.forward(side_length)turtle.right(90)def parallelogram(base, height):"&q…

C++——模拟实现string

1.再谈string string为什么要被设计成模板?日常使用string好像都是char*,char*不够使用吗,为什么要设计成模板呢? 1.1 关于编码 //计算机的存储如何区分呢?int main() {//比如在C语言中,有整型//如果是有…

Linux网络——HTTP协议详解(2)

文章目录 HTTP方法GET方法POST方法 状态码与报头状态码报头 会话 HTTP方法 HTTP方法有这些 但是怎么说呢,这些方法只有GET和POST方法是99%情况用到的 剩下的几乎不太用,如果有兴趣可以找《图解HTTP》,是处于了解的范畴 大家肯定一看就明白…

Qt Creator项目模板介绍

在Qt Creator中创建项目时,用户可以从多个模板类别中进行选择,以满足不同的开发需求。 Application(Qt) 在Application(Qt)类别下,Qt Creator提供了多种用于创建不同类型Qt应用程序的模板。这些模板主要包括: Qt Widgets Applic…

专业解析:移动硬盘“要求格式化”背后的真相与数据救援策略

引言:格式化预警下的数据危机 在日常的数字生活中,移动硬盘作为数据存储与传输的重要工具,其稳定性与安全性直接关系到用户资料的安全。然而,不少用户遭遇过这样一个令人头疼的问题——移动硬盘在接入电脑后,系统突然…

Tcping:一款实用的端口存活检测工具

简介 tcping 是一个基于TCP协议的网络诊断工具,通过发送 TCP SYN/ACK包来检测目标主机的端口状态。 官网:tcping.exe - ping over a tcp connection 优点: (1)监听服务器端口状态:tcping 可以检测指定端口的状态,默认是80端口,也可以指定其他端口。 (2)显示ping返…

MATLAB系列08:输入/输入函数

MATLAB系列08:输入/输入函数 8. 输入/输入函数8.1 函数textread8.2 关于load和save命令的进一步说明8.3 MATLAB文件过程简介8.4 文件的打开和关闭8.4.1 fopen函数8.4.2 fclose函数 8.5 二进制 I/O 函数8.5.1 fwrite 函数8.5.2 fread函数 8.6 格式化 I/O 函数8.6.1 f…

【漏洞复现】金斗云 HKMP download 任意文件读取漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

[Meachines] [Medium] Sniper RFI包含远程SMB+ powershell用户横向+CHM武器化权限提升

信息收集 IP AddressOpening Ports10.10.10.151TCP:80,135,139,445,49667 $ nmap -p- 10.10.10.151 --min-rate 1000 -sC -sV -Pn PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 10.0 |_http-server-header: Microsoft-IIS/10.…

【算法业务】互联网风控业务中的拒绝推断场景算法应用分享(涉及半监督算法、异常检测、变分自编码、样本权重自适应调整、迁移学习等)

1. 业务目标和任务描述 该项目是很早期的一个工作,属于互联网信贷风控场景,研究并应用信贷中的拒绝推断任务,处理方式也许对于目前的一些业务还有参考意义,因此这里做下分享。拒绝推断是指在信贷业务中,利用已知的接受…

植物大战僵尸【源代码分享+核心思路讲解】

植物大战僵尸已经正式完结,今天和大家分享一下,话不多说,直接上链接!!!(如果大家在运行这个游戏遇到了问题或者bug,那么请私我谢谢) 大家写的时候可以参考一下我的代码思…

网络安全-shire写任务计划、反弹shell、写私钥、反序列化

目录 一、环境 二、 介绍 三、开始做题 四、写公钥 一、环境 网上自己找 二、 介绍 我们经过前面文章很清楚知道,shiro是将数据存储在内存当中,内存落盘实现一个数据存储,而当其结合python,python将登录的session存储到shiro里…

矩阵范数介绍

这里写目录标题 理论1 诱导范数 (induced norm)2 “元素形式”范数(“entrywise" norm)3 Schatten 范数 论文中常用范数的书写 理论 参考张贤达矩阵分析page 34 矩阵范数主要有三种类型:诱导范数,元素形式范数和Schatten范数 1 诱导范数 (induce…

AiAutoPrediction足球网与泊松分布足球预测比赛模型介绍

AiAutoPrediction足球软件上线于2020年9月,是国内首家将泊松分布概率公式应用于足球比赛比分预测的软件。 AiAutoPrediction足球系列软件如下: AIAutoPrediction SoccerPredictor |走地大小球|走地让球|走地角球|数据分析 AiScorePredictor 泊松分布…

这可能又是一款 Java 程序员的必备插件了,无需解压直接编辑修改 jar 包内文件,神器!(附源码)

作为一名 Java 程序员,在维护一些古老的程序时,可能会遇到这种情况:项目依赖的 jar 包过于久远,已经没有源码了,但是有不得不修改的 bug 要处理。这时候就得想办法反编译 jar 包进行修改,并且重新打包&…