Linux开发工具之vim工具的使用介绍

目录

前言

1.vim的基本概念 

命令模式(Normal mode)

插入模式(Insert mode)

末行模式(last line mode)

2.vim的基本操作

 命令模式的命令集

 移动光标

​编辑

删除文字

复制

替换

 撤销操作

更改

vim末行模式命令集

简单vim配置

总结


前言

大家好呀,许久未和大家见面了,前段时间由于期末考试已经长时间未给大家更新了,那么今天小编就给大家带来这么长时间来的第一更,给大家介绍一下vim工具的使用


1.vim的基本概念 

   首先我们的vim一共有12种模式,但是这里我们主要只需要掌握三种模式的使用方式,分别是命令模式,插入模式以及底行模式。

命令模式(Normal mode)

(打开后默认的模式,用户所有输入都会被当作命令,一般不会给你作为文本输入)

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

插入模式(Insert mode)

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

末行模式(last line mode)

文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。要查看你的所有模式:打开vim,底行模式直接输入:help vim-modes

2.vim的基本操作

   首先给大家介绍的是我们三种模式转换的操作,我们在使用vim打开一个文件时,进入的默认模式是命令行模式,那么我们进入插入模式时我们只需要在命令模式下按[i]即可,插入模式下进入命令模式只需要我们按【Esc】,那么进入底行模式就需要我们在命令模式下按shift+;,底行模式转换为命令模式需要我们按【Esc】按键。我们的底行模式和我们的插入模式之间是不可以互相转换的,具体如下:

 命令模式的命令集

 移动光标

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

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

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

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

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

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

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

按[gg]:进入到文本开始(定位光标到最开始的行)

按[shift+g]:进入文本末端

按n+shift+g:定位光标到任意行

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

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

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

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

Linux是使用指令去控制我们的相关操作的因此我们光标的移动并不像我们Windows系统可以使用鼠标进行相关操作,这里我给大家演示一下几个指令的使用,大家可以尝试着自己使用一下。

 这里我们先用vim打开一个文件,然后进入插入模式写相关的代码,这里我们看到我们的光标在第四行。

 接下来我们点击shift+g将光标移到文章,大家看看效果:

 我们按3+shift+g将光标移到第三行,这里我们看看效果:

 这里就给大家简单的演示这两个,此外大家可以自己多尝试使用一下。

删除文字

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

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

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

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

「dd」:删除光标所在行,dd+p就是剪切

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

这里我们大写的X,也就是需要我们按shift+x即可,这里简单给大家演示一下以上的几个命令:

 这里我们就是点击x进行了删除的操作,删除了光标后面的字符。

 这里我使用dd删除了相应的行。

复制

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

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

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

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

「p」:将缓冲区内的字符贴到光标所在位置地下一行。注意:所有与“y”有关的复制命令都必须与“p”配合才能完

成复制与粘贴功能。

  (n)p:黏贴(n重复行)到光标所在下一行

这里我们点击yy复制相应的行然后点击10p复制10行内容,我们看结果:

替换

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

  (n)r:对光标字符+之后地所有字符进行批量替换

「R」:进入替换模式,替换光标所到之处的字符,直到按下「ESC」键退出替换模式回到命令模式。

 这里我们使用点击5r+x将五个字替换为x:

这里我们还有一种方式我们可以点击shift+r进入替换模式进行替换相关内容:

 撤销操作

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

「ctrl + r」: 撤销的恢复

更改

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

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

vim末行模式命令集

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

  set nonu :去掉行号

跳到文件中的某一行

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

再回车,就会跳到文章的第15行。

查找字符

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

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

保存文件

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

离开vim

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

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

 底行模式下我们可以直接执行我们的命令,不用退出,但需要在该之前加一个!

对于底行模式大家可以自己使用体验一下,这里小编就不给大家演示了,让大家好有个锻炼的机会。

简单vim配置

在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。(不建议这么干)而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。

打开自己目录下的.vimrc文件,执行 vim .vimrc

一般我们的配置都是在.vimrc中进行对相关文件的配置,而一般我们只有在我们的root用户中才有相关的.vimrc文件,但是我们并不建议在该中进行配置,这里会导致一些问题,所以这里我们就需要使用到普通用户在普通用户中创建.vimrc文件,然后进行相关配置,那么我们配置的原理如下:

首先我们创建一个文件,然后使用vim打开他,我们发现此处是没有行号的,那么我们这里给他配置行号

首先我们需要创建一个.vimrc文件,然后使用vim打开:

打开后我们输入set nu,关闭保存文件

 此时我们在打开text.txt文件就可以发现我们出现了行号。

 以上虽然我们已经知道了配置原理了,但是小编建议大家不要自己去配置,因为我们毕竟不怎么专业,所以这里小编给大家准备好了别的大佬已经配好的,大家可以直接复制到自己的系统中使用:curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh


总结

vim相当于是我们的一个编辑器,也相当于一个文本使用,但是我们要运行一个程序这远远是不够的,所以后续小编就会给大家带来我们的编译器的使用方式,大家敬请期待

 


 

 

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

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

相关文章

数据结构 | 图的最短路径 Floyd算法

一、数据结构定义 typedef int VertexType; typedef int EdgeType;/*图*/ typedef struct {VertexType Vexs[SIZE]; //结点 EdgeType Edges[SIZE][SIZE]; //权值 int vexnum, arcnum; }MGraph;/*路径*/ typedef struct {int path[SIZE][SIZE];EdgeType length; }Path; 1.二维…

微服务 云原生:微服务相关技术简要概述

后端架构演进 单体架构 所谓单体架构,就是只有一台服务器,所有的系统、程序、服务、应用都安装在这一台服务器上。比如一个 bbs 系统,它用到的数据库,它需要存储的图片和文件等,统统都部署在同一台服务器上。 单体架…

白皮书案例解读|数字孪生与港口的结合会碰撞出什么样的火花呢?

以下案例来自于《数字孪生世界白皮书(2023版)》 领取方式:公众号「EasyV数字孪生」后台回复「白皮书」即可领取! 嗨,我又出现啦~今天想和大家聊聊关于港口场景数字孪生技术的应用,欢迎大家踊跃…

基于JavaSwing+MySQL的仓库商品管理系统

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88046204?spm1001.2014.3001.5503 JDK1.8 MySQL5.7 功能:管理员与员工两个角色登录,增删改查用户信息,修改密码,增删改查商品信息&#xff0c…

opencv基础:环境配置

最近人工智能很火,所以蹭个热度,聊一个跨平台计算机视觉库----Opencv。 定义 先看一下其定义: OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、…

vue3中的excel表导出功能(选中导出或导出所有,也可支持vue2)

1.安装模块 npm install xlsx file-saver -S 2.文件导入 import * as XLSX from "xlsx"; import FileSaver from "file-saver" 3.整体代码(可选中导出或导出所有) <template><div><el-button type"warning" click"down&quo…

5.2 基于ROP漏洞挖掘与利用

通常情况下栈溢出可能造成的后果有两种&#xff0c;一类是本地提权另一类则是远程执行任意命令&#xff0c;通常C/C并没有提供智能化检查用户输入是否合法的功能&#xff0c;同时程序编写人员在编写代码时也很难始终检查栈是否会发生溢出&#xff0c;这就给恶意代码的溢出提供了…

Maven引入Jacoco插件后无法生成jacoco.exec执行文件

目录 jacoco.exec网上常见关于未生成jacoco.exec原因最终解决方案不生效原因解决方案 完整jacoco插件配置 jacoco.exec 执行数据文件&#xff0c;只有生成该文件&#xff0c;才表示引入插件jacoco成功生效 网上常见关于未生成jacoco.exec原因 网上找了一下解决方式基本都是…

React Dva修改路由设置,不要井号

我们Dva项目的路由 他默认是设置了带井号的这种 其实我觉得到还可以 但是有些人会觉得不太美观 如果 你想去除他 那么 你先要在终端执行 npm install --save history将 history 引入进来 装好之后 我们来到src下的 index.js 加上如下代码 import {createBrowserHistory as …

C 13300000000 代表 C 呼入电话

先欣赏一个美图吧 给一个序列 C 13300000000 代表 C 呼入电话 &#xff0c;电话号码 13300000000 W 037128* 代表 W 白名单 &#xff0c;后面可以模糊匹配&#xff0c;而且保证出现在最后一个 如果呼入时电话在白名单中&#xff0c;则可以呼入&#xff0c;否则拒绝 请按输…

拖拽示教功能块(含算法介绍和完整SCL ST源代码)

这篇博客介绍简单拖拽示教功能的简单原理,在了解示教功能之前大家需要熟悉运动控制相关的内容,这篇博客我们以脉冲驱动为例介绍,所以大家可以先熟悉下脉冲控制功能块,有关运动控制的相关内容,可以查看运动控制专栏,主要链接如下: SMART PLC和V90伺服实现外部脉冲位置控…

ELK插件介绍

ELK插件介绍 一、Grok 正则捕获插件1、概述2、内置正则表达式调用3、自定义表达式调用 二、multiline 多行合并插件1、概念2、安装3、使用 multiline 插件 三、date 时间处理插件1、概念2、操作3、时间戳详解 四、mutate 数据修改插件1、概念2、案例 一、Grok 正则捕获插件 1、…