【Linux探索学习】第七弹——Linux的工具(二):Linux下vim编辑器的使用详解

Linux的工具(一):【Linux探索学习】第六弹——Linux的工具(一):Ubuntu系统下的软件包管理器_ubuntu软件管理器-CSDN博客

前言:

在学习Linux之前,相信大家都或多或少的学习过一些计算机语言,比如C、C++等,也是用过一些编译软件,比如VSCode、VS2022等编译软件,这些软件都是在windows下的图形化编译软件,在Linux系统下不能直接使用这些软件,Linux下也有特定的编辑器和编译器,Vim(Vi IMproved)是 Linux 和 Unix 系统中最流行的文本编辑器之一。它是 Vi 编辑器的增强版,功能强大,灵活性高,广泛用于编写和编辑代码、文本文件等。本文将详细介绍 Vim 的基本概念、操作模式、常用命令以及一些高级功能。

注意:本文是所讲解的内容是在Ubuntu系统下进行操作的,centos系统下相关操作略有不同

目录

1. Vim 的基本概念

1.1 安装 Vim

​编辑

2. 操作模式

​编辑

3. 常用命令

3.1 打开和退出文件

3.2 基本编辑操作

3.3 移动光标

3.4 删除文字

3.5 复制

3.6 替换

3.7 更改

3.8 跳至指定的行

3.9 撤销上一次操作

4. 查找和替换

5. 高级功能

5.1 多文件编辑

5.2 分屏编辑

6. 配置 Vim

7. 总结


1. Vim 的基本概念

Vim 是一个基于命令行的文本编辑器,它的设计目标是为程序员和系统管理员提供高效的文本编辑能力。Eclipse、Visual Studio 等其他编辑器都提供了图形界面,但 Vim 的强大之处在于其键盘操作,使用户能快速进行文件编辑。但是vim作为一个文本编辑器的局限性就是它只能用来文本编写,也就是写代码,并不能执行代码,而像VS等软件则作为一个集成开发环境即可以写代码,还可以执行代码,vim编写的代码执行是需要其它Linux工具来完成的

1.1 安装 Vim

在 Ubuntu 系统上,可以通过以下命令安装 Vim:

sudo apt update 
sudo apt install vim

需要注意的是当我们以普通用户的身份去下载安装包的时候,是需要sudo提权的,如何使用sudo提权在之前的文章讲过了:Linux用户管理

2. 操作模式

Vim 主要有三种操作模式:

  • 命令模式:Vim 启动后默认的模式,可以使用快捷键执行命令,此模式下用户的所有输入都会被当作命令,一般不会 给你作为文本输入
  • 插入模式:用于文本输入,按 i 进入插入模式,按 Esc 返回普通模式,此模式下可以进行代码编写
  • 底行模式:用于输入命令,按 : 进入命令行模式,此模式下可以进行退出保存等多种命令操作

3. 常用命令

3.1 打开和退出文件

  • 打开文件:
vim filename

首先我们先创建一个filename文件,我们用vim进入

这样就表示我们进入到vim中去了

  • 退出 Vim:
:q # 如果没有修改,直接退出 
:q! # 强制退出,不保存修改 
:wq # 保存修改并退出

:q    vim编辑器的底行模式的具体进入方法就是:在命令模式下按冒号就可以了

比如上图中是我们进入到filename文件内,q命令就是退出该文件,但是我们在文件中写入内容不会被保存,当我们再次进入这个文件中去就没有内容了

:wq  保存的命令是w,所以wq命令的作用就是保存并退出

:wq!  感叹号的作用是强制执行的意思,因为有些文件是无法被写入的,后面我们也会遇到这类文件,如果我们想往里面写东西就需要感叹号强制写入保存

3.2 基本编辑操作

  • 进入插入模式:按 i(在光标前插入)或 a(在光标后插入)。
  • 删除字符:在普通模式下,按 x 删除光标下的字符。
  • 撤销操作:按 u 撤销操作,按 Ctrl + r 重做操作。

3.3 移动光标

  • h:向左移动一个字符。
  • j:向下移动一行。
  • k:向上移动一行。
  • l:向右移动一个字符。
  • gg:移动到文件开头。
  • G:移动到文件结尾。
  • Ctrl + f:向下翻一页。
  • Ctrl + b:向上翻一页。

3.4 删除文字

  • 「x」:每按一次,删除光标所在位置的一个字符
  • 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
  • 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
  • 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
  • 「dd」:删除光标所在行
  • 「#dd」:从光标所在行开始删除#行

3.5 复制

  • 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
  • 「#yw」:复制#个字到缓冲区
  • 「yy」:复制光标所在行到缓冲区。
  • 「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
  • 「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

3.6 替换

  • 「r」:替换光标所在处的字符。
  • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止。

3.7 更改

  • 「cw」:更改光标所在处的字到字尾处
  • 「c#w」:例如,「c3w」表示更改3个字

3.8 跳至指定的行

  • 「ctrl」+「g」列出光标所在行的行号。
  • 「#G」:例如,「15G」,表示移动光标至文章的第15行行首。

3.9 撤销上一次操作

  • 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
  • 「ctrl + r」: 撤销的恢复

小结:上面的这些命令是经常要用到的vim编辑器命令,如果能够全部熟练掌握自然最好,但是也并不要求一定要记住,知道有这些命令即可,遇到了可以再搜索查看一下

4. 查找和替换

  • 查找文本:在命令模式下,输入 /text 查找 text,使用 n 移动到下一个匹配项。
  • 替换文本:在底行模式下,输入:
:%s/old_text/new_text/g

这将把文件中的 old_text 替换为 new_text

5. 高级功能

5.1 多文件编辑

  • 打开多个文件:
vim file1 file2

  • 查看打开的文件有哪些:
:ls  #底行模式下输入ls可以查看打开的文件有哪些

  • 切换文件:
:bnext  #可以切换到相近的下一个文件(如果所处文件为最后一个文件,则会切换到第一个文件)

比如此时我们在file1文件中,执行完bnext之后我们就可以切换到file2文件中:

再次执行bnext命令我们会发现我们又切换到file1文件

5.2 分屏编辑

  • 水平分屏:
:split 文件名
  • 垂直分屏:
:vsplit 文件名
  • 切换窗口:按 Ctrl + w 就可以切换到不同的窗口

比如:

执行一下水平分屏和垂直分屏:

执行完之后我们就可以打开三个文件,且这三个文件呈水平或垂直分屏状态:

6. 配置 Vim

经过我们上面的使用,已经能感受到vim的使用是不太方便的,没有vs等界面化的编辑方式,而且行号、自动补全括号、自动缩进等功能都是没有的,其实这些东西都是可以进行配置的

Vim 的配置文件是 ~/.vimrc,这个文件默认是没有的,是需要我们自己创建的

创建之后我们就可以vim进入里面然后进入各种相关配置

vim的配置是一个比较繁琐的事情,尤其是Ubuntu系统下的配置,更是困难,需要全部手动配置,centos系统下的vim配置网上是有直接的链接的,直接下载即可,vim配置的内容本篇就不做详解了,如果想要配置一下的可以去再搜索一下相关的博客,还是有不少写的比较好的vim配置博客的,由于版权问题,我这里就不贴出来了

7. 总结

Vim 是一个功能强大的文本编辑器,掌握 Vim 的基本操作和命令,可以大大提高文本编辑的效率。尽管 Vim 的学习曲线相对较陡,但一旦熟悉后,它无疑是开发者和系统管理员的得力助手。

感谢各位大佬观看,创作不易,还请各位大佬点赞支持!!!

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

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

相关文章

微信小程序用开发工具在本地真机调试可以正常访问摄像头,发布了授权后却无法访问摄像头,解决方案

今天开发上线了一个拍照的微信小程序&#xff0c;用uniapp的Vue3开发的&#xff0c;调用的camera组件&#xff0c;相关代码如下&#xff1a; <!-- 微信小程序相机组件 --><view v-if"showCamera" class"camera-container"><camera :device…

Adobe Acrobat DC 打印PDF文件,没有打印出注释的解决方法

adobe acrobat在打印的时候&#xff0c;打印不出来注释内容&#xff08;之前一直可以&#xff0c;突然就不行&#xff09;&#xff0c;升级版本、嵌入字体等等都试过&#xff0c;也在Google找了半天和问了GPT也么找着办法。 无奈之下&#xff0c;自己通过印前检查&#xff0c;…

免费开源AI助手,颠覆你的数字生活体验

Apt Full作为一款开源且完全免费的软件&#xff0c;除了强大的自然语言处理能力&#xff0c;Apt Full还能够对图像和视频进行一系列复杂的AI增强处理&#xff0c;只需简单几步即可实现专业级的效果。 在图像处理方面&#xff0c;Apt Full提供了一套全面的AI工具&#xff0c;包…

Windows环境下Qt Creator调试模式下qDebug输出中文乱码问题

尝试修改系统的区域设置的方法&#xff1a; 可以修复问题。但会出现其它问题&#xff1a; 比如某些软件打不开&#xff0c;或者一些软件界面的中文显示乱码&#xff01; 暂时没有找到其它更好的办法。

《YOLO目标检测》—— YOLO的简单介绍及Map评估指标

文章目录 一、简单概述二、YOLO中的Map指标1.定义与计算2.应用与意义3.注意事项 一、简单概述 YOLO&#xff08;You Only Look Once&#xff09;是一种目标检测算法&#xff0c;由Redmon等人在2016年提出。它的主要特点是速度快且准确性高&#xff0c;非常适合用于实时目标检测…

C# WebApi 接口测试工具:WebApiTestClient应用技术详解

目录 一、引言 二、WebApiTestClient介绍 1、特性 2、应用场景 三、WebApiTestClient具体使用 1、WebApi项目引入组件 2、如何使用组件 1、修改Api.cshtml文件 2、配置读取注释的xml路径 3、测试接口 四、总结 一、引言 由于最近项目需要开发WebApi接口&…

热更新解决方案2 —— Lua语法相关知识点

概述 开发环境搭建 Lua语法 1.第一个Lua程序 2.变量 print("******变量*******"); --lua当中的简单变量类型 -- nil number string boolean -- lua 中所有的变量声明 都不需要声明变量类型 它会自动的判断类型 -- 类似C# 中的var --lua中的一个变量 可以随便赋值 ——…

Java开发中知识点整理

正则表达式 测试网址 Git 分支和主分支有冲突 先checkout origin/分支把origin/master pull进本地分支 修改冲突MergeCommit and Push

旧电脑安装Win11提示“这台电脑当前不满足windows11系统要求”,安装中断。怎么办?

前言 最近有很多小伙伴也获取了LTSC版本的Win11镜像&#xff0c;很大一部分小伙伴安装这个系统也是比较顺利的。 有顺利安装完成的&#xff0c;肯定也有安装不顺利的。这都是很正常的事情&#xff0c;毕竟这个镜像对电脑硬件要求还是挺高的。 有一部分小伙伴在安装Windows11 …

用Python删除PDF文档页面的页边距

在处理PDF文档时&#xff0c;有时候我们会遇到PDF文件带有较大的页边距的情况。这样过大的页边距不仅浪费了页面空间&#xff0c;而且在打印或电子阅读时也可能影响用户体验。通过删除这些不必要的页边距&#xff0c;我们可以更有效地利用页面区域&#xff0c;使得内容更加紧凑…

实现vlan间的通信

方法一&#xff1a;单臂路由 概述 单臂路由是一种网络配置&#xff0c;它允许在路由器的一个物理接口上通过配置多个子接口来处理不同VLAN的流量&#xff0c;从而实现VLAN间的通信。 原理 路由器重新封装MAC地址&#xff0c;转换Vlan标签 基础模型 1、配置交换机的链…

STM32F1+HAL库+FreeTOTS学习18——任务通知

STM32F1HAL库FreeTOTS学习18——任务通知 1. 任务通知1.1 任务通知的引入1.2 任务通知简介1.3 任务通知的优缺点 2. 任务相关API函数2.1 发送任务通知2.1.1 xTaskGenericNotify()2.1.2 xTaskNotifyGive()和xTaskNotifyGiveIndexed()2.1.2 xTaskNotify()和xTaskNotifyIndexed()2…

苹果仍在研发更大尺寸的 iMac | Swift 周报 issue 60

文章目录 前言新闻和社区消息称苹果仍在研发更大尺寸的 iMac 屏幕超过 30 英寸最新&#xff01;苹果大动作Apple Entrepreneur Camp 现已开放申请 提案通过的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主整理周报的第六十期&#xff0c;每个模块已初…

我谈傅里叶变换幅值谱的显示

在图像处理和分析中通常需要可视化图像傅里叶变换的幅值谱。通过幅值谱&#xff0c;可以直观地观察频率成分的分布&#xff0c;帮助理解图像的结构和特征。 很多刊物中直接显示傅里叶变换的幅值谱。 FFT fftshift(fft2(double(Img))); FFT_mag mat2gray(log(1abs(FFT)));由…

跨时钟域处理(单bit)_2024年10月21日

慢时钟域同步到快时钟域&#xff1a;打两拍 在快时钟域clk下对慢时钟域信号进行打两拍&#xff08;亚稳态概率很低&#xff09; 脉冲宽度改变&#xff0c;但不影响同步结果 快时钟域同步到慢时钟域&#xff08;两种方法&#xff09; ① 脉冲展宽同步 在快时钟域clk下对快时…

基于卷积神经网络的蔬菜识别系统,resnet50,mobilenet模型【pytorch框架+python源码】

更多目标检测和图像分类识别项目可看我主页其他文章 功能演示&#xff1a; 基于卷积神经网络的蔬菜识别系统&#xff0c;resnet50&#xff0c;mobilenet【pytorch框架&#xff0c;python&#xff0c;tkinter】_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于卷积神…

单神经元建模:基于电导的模型[神经元结构、静息电位和等效电路]

文章目录 神经元结构、静息电位和等效电路神经元结构静息电位能斯特方程1. **描述浓度比的非线性关系**&#xff1a;2. **化学势与电势的关系**&#xff1a;3. **对称性**&#xff1a;4. **热力学与平衡**&#xff1a;总结&#xff1a; GHK方程Nernst方程和GHK方程的对比 等效电…

《仓库猎手模拟》风灵月影游戏辅助使用教程

《仓库猎手模拟》是一款休闲独立的模拟经营佳作&#xff0c;让玩家沉浸于经济管理的乐趣中&#xff0c;亲手利用工具探索仓库的每个角落&#xff0c;发掘并鉴定珍稀物品。借助修改器&#xff0c;玩家能更轻松地享受游戏过程&#xff0c;体验寻宝与经营的双重乐趣。 修改器安装&…

【C语言】文件操作(2)(文件缓冲区和随机读取函数)

文章目录 一、文件的随机读取函数1.fseek函数2.ftell函数3.rewind函数 二、文件读取结束的判断1.被错误使用的feof2.判断文件读取结束的方法3.判断文件结束的原因feofferror判断文件读取结束原因示例 三、文件缓冲区 一、文件的随机读取函数 在上一篇的文章中&#xff0c;我们讲…

Android10 recent键相关总结

目录 初始化流程 点击Recent键流程 RecentsActivity 显示流程 RecentsModel 获取数据管理类 RecentsActivity 布局 已处于Recent界面时 点击recent 空白区域 点击返回键 recent组件配置 Android10 Recent 功能由 System UI&#xff0c;Launcher共同实现。 初始化流程 …