Linux编辑器---vim的使用

       Vim是一个高度可配置的文本编辑器,它是操作Linux的一款利器,旨在高效地创建和更改任何类型的文本。这款编辑器起源于"vi",并在此基础上发展出了众多新的特性。Vim被普遍推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。

       对于程序员来说,Vim特别受欢迎,因为它具有代码补全、编译及错误跳转等方便编程的功能。此外,其可定制性也使得它可以根据用户的需求进行个性化设置。同时,由于Vim的稳定性以及持续的开发,使它变得越来越好,越来越符合用户的需求,所以,接下来我们开始对vim进行学习。


一、vim的基本概念

       我们今天分享vim的三种模式(其实有好多模式,目前掌握这3种即可);分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

1.正常/普通/命令模式(Normal mode)

       控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

2.插入模式(Insert mode)

       只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

3.未行模式(last line mode)

       文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,shift+:即可进入该模式。

       要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes


二、vim的基本操作

       在系统提示符号输入vim及文件名称后,如输入vim test.c进入vim,就进入vim全屏幕编辑画面:



       不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。

正常模式]切换至[插入模式]

        输入a       输入i       输入o

       当终端左下角显示插入时,我们就可以编辑输入了。

[t插入模式]切换至[正常模式]

       目前处于[插入模式],就只能一直输入文字,如果发现输错了字想用光标键往回移动,将该字删除,可以先按一下「ESC」键转到[正常模式]再删除文字。当然,也可以直接删除。

[正常模式]切换至[床行模式]

        「shift+:」,其实就是输入「:」

退出vim及保存文件

在[正常模式]下,按一下「:」冒号键进入「Last line mode」

例如:

        :w(保存当前文件)

        : wq(输入「wq」,存盘并退出vim)

        :q!(输入q!,不存盘强制退出vim)


三、vim正常模式命令集

插入模式

       按i切换进入插入模式「 insert mode」,按"T"进入插入模式后是从光标当前位置开始输入文件;

       按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;

       按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。

从插入模式切换为命令模式

       按「ESC」键。

移动光标

       vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母 「h」、「j」、 「k」 、「l」,分别控制光标左、下、上、右移一格,如下图:

        按「G」:移动到文章的最后

        按「$」:移动到光标所在行的“行尾”

        按「^」:移动到光标所在行的“行首”

        按「w」:光标跳到下个字的开头

        按「e」:光标跳到下个字的字尾

        按「b」:光标回到上个字的开头

        按「#l」:光标移到该行的第#个位置,如:5l、56l

        按「gg」:进入到文本开始

        按「shift+g」:进入文本末端

”由于vim编辑内容较短,大家可以自行练习下列操作“

        按「ctrl」+「b」:屏幕往“后”移动一页

        按「ctrl」+「f」:屏幕往"前“移动一页

        按「ctrl」+「u」:屏幕往"后”移动半页

        按「ctrl」+「d」:屏幕往“前“移动半页

删除文字

        「x」:每按一次,删除光标所在位置的一个字符

        「#x」:例如,「6x」表示删除光标所在位置的"后面(包含自己在内)“6个字符

        「X」:大写的X,每按一次,删除光标所在位置的“前面"一个字符

        「#X」:例如,「20x」表示删除光标所在位置的“前面"”20个字符

        「dd」 :-删除光标所在行

        「#dd」:从光标所在行开始删除#行

复制

        「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

        「#yw]:复制#个字到缓冲区

        「yy]:复制光标所在行到缓冲区。

        「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。

        「pl」︰将缓冲区内的字符贴到光标所在位置。注意:所有与'y"有关的复制命令都必须与“p配合才能完成复制与粘贴功能

替换

        「r」:替换光标所在处的字符。

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

撤销上一次操作

        「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次"u"可以执行多次回复。

        「ctrl+r」:撤销的恢复

更改

        「cw」:更改光标所在处的字到字尾处

        「c#w」:例如,「c3w」表示更改3个字

跳至指定的行

        「ctrl」 +「g」列出光标所在行的行号。

        「#G」:例如,「15G」,表示移动光标至文章的第15行行首。


四、vim末行模式命令集

       在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。

列出行号

        「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。跳到文件中的某一行

        「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字4,再回车,就会跳到文章的第4行。

查找字符

        「/关键字」︰先按「」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按

        「n」会往后寻找到您要的关键字为止。

        「?关键字」︰先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止

保存文件

        「w」:在冒号输入字母「w」就可以将文件保存起来

离开vim

        「q]:按「q」就是退出,如果无法离开vim,可以在「q」后跟一个「」强制离开vim.。

        「wq」:一般建议离开时,搭配「w]一起使用,这样在退出的时候还可以保存文件。


结语:Linux编译器关于vim使用的分享到这里就结束了,没有进行展示的操作大家可以自行练习,希望本篇文章的分享会对大家的学习带来些许帮助,如果大家有什么问题,欢迎大家在评论区留言~~~ 

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

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

相关文章

asp.net core自定义异常过滤器并记录到Log4Net日志

1.创建异常过滤器特性 using Log4Net.Controllers; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters;namespace Log4NetTest {public class CustomerExceptionFilterAttribute : Attribute, IExceptionFilter{private readonly ILogger<CustomerE…

docker通过nginx代理tomcat-域名重定向

通过昨天的调试&#xff0c;今天做这个域名就简单了&#xff0c; 正常我们访问网站一般都是通过域名比如&#xff0c;www.baidu.com对吧&#xff0c;有人也通过ip&#xff0c;那么这个怎么做呢&#xff1f;物理机windows可以通过域名访问虚拟机linux的nginx代理转向tomcat服务…

【多线程 - 01、概述】

进程 几乎所有的操作系统都支持进程概念&#xff0c;进程是处于运行过程中的程序&#xff0c;进程是操作系统中进行资源分配的基本单位。 三个基本特征 独立性&#xff1a;指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位。而对于未建立任何进程的程序&…

257. 二叉树的所有路径

描述 : 给你一个二叉树的根节点 root &#xff0c;按 任意顺序 &#xff0c;返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 题目 : LeetCode 257.二叉树的所有路径 : 257. 二叉树的所有路径 分析 : 我们可以注意到有几个叶子节点&#xff0c;就有…

基于SpringBoot+Vue+mysql卓越导师双选系统设计与实现

博主介绍&#xff1a;✌Csdn特邀作者、博客专家、博客云专家、B站程序阿龙带小白做毕设系列&#xff0c;项目讲解、B站粉丝排行榜前列、专注于Java技术领域和毕业项目实战✌ 系统说明简介&#xff1a; 如今的信息时代&#xff0c;对信息的共享性&#xff0c;信息的流通性有着较…

win10使用mingw安装OpenCV4.8

1. cmake安装 下载链接如下https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7-windows-x86_64.zip 解压后放到指定目录后&#xff0c;添加bin目录到环境变量即可。 2. mingw安装 下载链接如下(下图的x86_64-posix-sjlj)&#xff1a; Download x86_…

【tgowt】更新thirdparty

更新完毕后是这样的 之前有过构建但是不能用在owt-p2p项目中,会有崩溃? 【tgowt】cmake转ninja vs构建现在好像都更新到108了 submodule比较麻烦 只修改这里的还不行:一旦git submodule init 后,再改这里的似乎晚了?如果能成功clone就有生成 还必须要改这里的 折腾好几次才…

Echarts柱状体实现滚动条动态滚动

当我们柱状图中X轴数据太多的时候&#xff0c;会自动把柱形的宽度挤的很细&#xff0c;带来的交互非常不好&#xff0c;因此就有一个属性来解决&#xff1a;dataZoom 第一种简易的版本&#xff0c;横向滚动。 dataZoom: {show: true, // 为true 滚动条出现realtime: true, // 实…

【Java】Netty创建网络服务端客户端(TCP/UDP)

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Netty创建网络服务端客户端示例。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更…

徒步“三色”泸溪 共赏冬日胜景

&#xff08;金笛 胡灵芝&#xff09;11月11日&#xff0c;“中国体育彩票”2023年“走红军走过的路”徒步穿越系列活动&#xff08;泸溪站&#xff09;暨泸溪文旅推荐活动在泸溪县举行&#xff0c;来自全国各地千余名户外爱好者通过徒步的方式&#xff0c;传承红色基因&#x…

浅浅地优化下视频流播放体验

作者&#xff1a;唐子玄 这一篇将从零开始&#xff0c;一步步解决如下这些问题&#xff1a;如何播放单个视频&#xff1f;如何将播放器模块化&#xff1f;如何实现视频流&#xff1f;如何优化视频播放内存&#xff1f;如何优化视频流播放体验&#xff1f; 播放视频 ExoPlayer…

HashMap 是怎么解决哈希冲突的?

&#xff08;本文摘自mic老师面试文档&#xff09; 常用数据结构基本上是面试必问的问题&#xff0c;比如 HashMap、LinkList、 ConcurrentHashMap 等。 关于 HashMap&#xff0c;有个学员私信了我一个面试题说&#xff1a; “HashMap 是怎么解决哈希冲突 的&#xff1f;” …

网络安全基础之php开发文件上传的实现

前言 php是网络安全学习里必不可少的一环&#xff0c;简单理解php的开发环节能更好的帮助我们去学习php以及其他语言的web漏洞原理 正文 在正常的开发中&#xff0c;文件的功能是必不可少&#xff0c;比如我们在论坛的头像想更改时就涉及到文件的上传等等文件功能。但也会出…

前端通过导入editor.md库实现markdown功能

小王学习录 今日摘录前言jquery下载editor下载editor和jquery的导入初始化editor总结 今日摘录 满招损&#xff0c;谦受益 前言 要想通过editor.md实现markdown的功能&#xff0c;需要经过如下四步&#xff1a; 下载editor.md到本地将本地editor导入到前端代码中编写少量代…

No source control providers registered

使用vscode时碰到这个问题 git扩展没启动

LeetCode(3)删除有序数组中的重复项【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 26. 删除有序数组中的重复项 1.题目 给你一个 非严格递增排列 的数组 nums &#xff0c;请你** 原地** 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保…

推荐这款机器学习的特征筛选神器!

大家好&#xff0c;特征选择是机器学习建模流程中最重要的步骤之一&#xff0c;特征选择的好坏直接决定着模型效果的上限&#xff0c;好的特征组合甚至比模型算法更重要。除了模型效果外&#xff0c;特征选择还有以下几点好处&#xff1a; 提高模型性能并降低复杂性&#xff08…

华为ensp:交换机接口划分vlan

现在要把 e0/0/1 接口放入vlan1 e0/0/2 接口放入vlan2 e0/0/3 接口放入vlan3 默认所有接口都在vlan1所以 e0/0/0 接口不用动 1.创建vlan 进入系统视图模式 直接输入 vlan 编号 即可创建对应vlan vlan 编号 vlan 2 创建vlan2 vlan 3 创建vlan3 2.将接口进入vlan…

Spring Boot自动配置原理、实战、手撕自动装配源码

Spring Boot自动配置原理 相比较于传统的 Spring 应用&#xff0c;搭建一个 SpringBoot 应用&#xff0c;我们只需要引入一个注解 SpringBootApplication&#xff0c;就可以成功运行。 前面四个不用说&#xff0c;是定义一个注解所必须的&#xff0c;关键就在于后面三个注解&a…

Flink SQL自定义表值函数(Table Function)

使用场景&#xff1a; 表值函数即 UDTF&#xff0c;⽤于进⼀条数据&#xff0c;出多条数据的场景。 开发流程&#xff1a; 实现 org.apache.flink.table.functions.TableFunction 接⼝实现⼀个或者多个⾃定义的 eval 函数&#xff0c;名称必须叫做 eval&#xff0c;eval ⽅法…