【Linux】Linux编辑器—vim使用

news2024/12/27 15:20:17

目录

    • 1.vim的基本概念
    • 2.vim基本操作
    • 3.vim命令模式命令集
    • 4.vim末行模式命令集
    • 5.简单vim配置
    • 6.使用sudo提权

为什么要学习vim?

“在 Linux 系统中一切都是文件,而配置一个服务就是在修改其配置文件的参数”。 而且在日常工作中大家也肯定免不了要编写文档,这些工作都是通过文本编辑器来完成的。

vim是Linux上的文本编辑器(写代码的工具),有时候在我们的生产环境下我们的软件可能会出现各种各样的问题,这些问题都需要我们通过vim来解决,如果我们不会vim,这时就要我们在Windows下的VS code进行本地和远端的联合开发,查看问题,没办法直接在Linux上进行修改,这太慢了。

我们的目标是先使用vim用熟了之后在windows黑屏下可以直接编程,这样我们开发软件在Linux下运行时出现问题,我们可以使用vim来面对这些极端环境(如:对源代码进行修改),也满足了我们的常规开发。

了解:

vi和vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows。

这里是一张vi/vim的指令的键盘图,可以结合这篇博客学习
在这里插入图片描述

1.vim的基本概念

不同与VS 2019、idea这些集成开发环境(ide),vim就是一个单纯的编辑器。

在我们使用的Linux操作系统上一般都会默认安装vim,不需要我们再次安装。我们可以直接输入vim回车查看是否安装,若显示效果如下则表示以安装。(使用ctrl + z返回)

在这里插入图片描述

若没有vim可使用下面的指令安装

yum install -y vim         //root下
sudo yum install -y vim    //普通用户下,使用sudo安装

vim是一款多模式的编辑器,每种模式的用法和差别不同,每种模式可以互相切换,这里我们主要掌握三种,分别是命令模式、插入模式和底行模式,各模式的功能区分如下:

  • 正常/普通/命令模式

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

  • 插入模式

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

  • 末行模式

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

    :help vim-modes

2.vim基本操作

vim编辑器中的这三种模式,每种模式分别又支持多种不同的命令快捷键,这大大提高了工作的效率,而且用户在习惯后也会觉得相当顺手。要想高效率地操作文本,就必须先搞清这三种模式的操作区别以及模式之间的切换方式。

在这里插入图片描述

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

    • vim 文件名(我们可以直接使用vim 文件名打开文件编译,该文件不存在默认创建文件,该文件存在打开该文件)
    • 进入vim之后,是处于[命令模式],你要切换到[插入模式]才能够输入文字。

在这里插入图片描述

  • 【命令模式】切换至【插入模式】

    • 输入a

    • 输入i

    • 输入o

在这里插入图片描述

  • 【插入模式】切换至【命令模式】

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

    • [shift + ;] ,其实就是输入 [:]冒号
  • 退出vim及保存文件,在【命令模式】下,按一下【:】冒号键进入[Last line mode],例如:

    • :w (保存当前文件)
    • :wq (输入[wq],存盘并退出vim)
    • :q! (输入q!,不存盘强制退出vim)
    • :q (退出,若文件经过修改没办法直接退出)
    • :set nu (显示行号)
    • :set nonu (不显示行号)
    • :命令 (执行该命令)
    • :整数 (跳转到该行)

    下图为从插入模式到退出vim
    在这里插入图片描述

总结:

在每次运行 Vim 编辑器时,默认进入命令模式,此时需要先切换到输入模式后再进行文档编写工作,而每次在编写完文档后需要先返回命令模式,然后再进入末行模式,执行文档的保存或退出操作。在 Vim 中,无法直接从输入模式切换到末行模式。

  • 若我们不知道目前处在什么模式,无脑【ESC】,按过之后一定在命令模式
  • 退出的时候一定要先保存在退出。
  • 打开vim后就不要用鼠标和鼠标滑轮。

3.vim命令模式命令集

以下命令在命令模式下实现

  • 插入模式

    • 按【i】切换进入插入模式【insert mode】,按”i“进入插入模式后是从光标当前位置开始输入文件;
    • 按【a】进入插入模式后,是从目前光标所在位置的下一个位置开始插入文字;
    • 按【o】进入插入模式后,是插入新的一行,从行首开始输入文字。

    按【ESC】键从插入模式退回命令模式

  • 移动光标

    • vim可以直接用光标来上下左右移动,但规定的vim是用小写英文字母 【h】、【j】、【k】、【l】,分别控制光标左、下、上、右移一格。

      在这里插入图片描述

    • 按 【G】:移动到文章的最后

    • 按 【$】:移动到光标所在行的”行尾“

    • 按 【^】:移动到光标所在行的”行首“

    • 按 【w】:光标跳到下个字的开头

    • 按 【n + w】:光标跳到往后第n个字的开头

    • 按 【e】:光标跳到下个字的字尾

    • 按 【b】:光标回到上个字的开头

    • 按 【n + b】:光标跳到往前第n个字的开头

    • 按 【#】:光标移动到该行的第#个位置,如:51,561

    • 按 【gg】:进入到文本开始

    • 按 【shift + g】:进入文本末端

    • 按 【n + shift + g】:首先输入需要定位的行数n,在按shift + g贯标移至该行

    • 按 【ctrl】+【b】:屏幕往”后“移动一页

    • 按 【ctrl】+ 【f】:屏幕往”前“移动一页

    • 按 【ctrl】+【u】:屏幕往”后“移动半页

    • 按 【ctrl】+【d】:屏幕往”前“移动半页

  • 删除文字

    • 【x】:每按一次,删除光标所在位置的一个字符
    • 【#x】:例如,【6x】表示删除光标所在位置的”后面(包括自己在内)“6个字符
    • 【X】:大写的X,每按一次,删除光标所在位置的”前面“一个字符
    • 【#X】:例如,【20X】表示删除光标所在位置的”前面“20个字符
    • 【dd】:剪切所在行(在使用p进行粘贴,不使用p操作即为删除)
    • 【#dd】:从光标所在行开始剪切#行
  • 复制

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

    在vim中一旦保存退出,之前的拷贝操作就不会再保存,下面很多操作同理。

    如图为复制一行和多行:
    在这里插入图片描述

  • 替换

    • 【r】:替换光标所在处的字符
    • 【R】:替换光标所到之处的字符,直到按下【ESC】键为止
  • 撤销上一次操作

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

    如下图为进行撤销和撤销的恢复指令:
    在这里插入图片描述

  • 更改

    • 【cw】:更改光标所在处的字到字尾处
    • 【c#w】:例如,【c3w】表示更改3个字
    • 【shift + ~】:进行大小写切换
    • 【r】+【替换的字符】:先按r后在按需要替换的字符,光标所指字符就替换为要替换的字符了
    • 【n+r】+【替换的字符】:增加n表示替换光标所在位置后的n个字符。
    • 【shift + r】:进入替换模式(使用【ESC】退出该模式)

    如下图,进行大小写切换
    在这里插入图片描述
    如下图进入替换模式
    在这里插入图片描述

  • 跳至指定的行

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

4.vim末行模式命令集

在使用末行模式之前,请记住先按【ESC】键确定已经处在命令模式,再按【:】冒号即可进入末行模式。

  • 列出行号

    • 【set nu】:输入set nu后,会在文件中的每一行前面列出行号。
    • 【set nonu】:输入set nonu后,不显示行号。
  • 跳到文件中的某一行

    • 【#】:【#】号表示一个数字,在冒号后输入一个数字,在按回车键就会跳到该行了,如:输入数字15,在回车,就会跳到文章的第15行。
  • 查找字符

    • 【/关键字】:先按【/】键,在输入想要寻找的字符,如果第一次找的关键字不是想要的,可以一直按【n】会往后寻找到需要的关键字为止。

    • 【?关键字】:先按【?】键,再输入想要寻找的字符,如果第一次找的关键字不是想要的,可以一直按【n】会往后寻找到需要的关键字为止。

    • 问题:/ 和 ?查找右什么区别?

      区别:

      ?查找按【n】向上查找

      / 查找按【n】向下查找
      在这里插入图片描述

  • 保存文件

    • 【w】:再冒号输入字母【w】就可以将文件保存起来。
  • 离开vim

    • 【q】:按【q】就是退出,如果无法离开vim,可以再【q】后跟一个【!】强制离开vim。
    • 【wq】:一般建议离开时,搭配【w】一起使用,这样在退出的时候还可以保存文件。
  • 对文件进行操作

    • 【! + 命令】:使用!后跟命令表示执行该命令。

      如:

      ! gcc test.c表示对该文件生成可执行文件。

      ! ls -la 显示该文件所在目录下的文件信息

    在这里插入图片描述

  • 替换操作

    • 【s/替换目标/替换的数据】:如:s/ZS/MAN,将当前光标所在行的第一个ZS替换成MAN
    • 【s/替换目标/被替换数据/g】:如:s/ZS/MAN/g,将当前光标所在行的所有ZS都替换成MAN(g—global,全局的)
    • 【%s/替换目标/被替换数据/g】:如:%s/ZS/MAN/g,将全文中的所有ZS替换成MAN

    在这里插入图片描述

  • 分屏操作

    • 【vs 文件名】:分屏创建新的文件。
    • 注意:
      1. 光标只有一个,光标在哪里,编写那个文件。
      2. 使用ctrl + w + w(ctrl按着不动,w快速按两下,切换光标到不同文件)
      3. 可以使用vs产生多个分屏,不过一般最多三个,再多影响实际操作。
      4. 新创建的文件可以是以创建的,也可以是未创建的,vs后默认创建
      5. 使用wq或q退出

5.简单vim配置

在我们的学习和工作中,Linux系统最开始的vim或我们自己下载的vim在最开始,用起来不是很方便,这就需要我们自己配置或者下载某个大佬的vim配置文件,来修改自己的vim。

我们自己配置vim时,配置文件名为.vimrc,vim在启动时,会自动在当前用户目录下,寻找该配置文件,如果没有找到,使用的依然时最初的vim。

我们可以自己创建.vimrc文件,在其中进行配置,添加自己需要的功能即可。

cd ~                  //进入家目录
touch .vimrc          //创建vim配置文件

自己创建的.vimrc配置文件,每个Linux用户都是独立互不影响的,我们在一个用户下配置一个vim配置文件,所做的配置不会影响到该Linux系统下的其他用户,只是修改了该用户下的vim。

我们一般将.vimrc配置文件放在用户的家目录下(以下是我下载别人的配置文件)

在这里插入图片描述

大家想要配置一下自己的配置文件,可以在网上搜索一下。

在这里插入图片描述

找一些自己喜欢的设置,写在自己的配置文件中。

上面的图片都是我为配置v之前的vim,下图是我下载大佬配置好的vim

在这里插入图片描述

如果大家的版本是centos7的,可以将以下命令复制到命令行中,下载该vim,重启后,即可使用。

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

大家还可以点击下面的链接学习更多的vim知识。

vim从入门到精通

6.使用sudo提权

在Linux下,root用户可以无视权限做任何事情,而其他的普通用户却做不到,但在学习和工作中,我们同样需要在普通用户下使用root权限做一些事情,这里我们就需要使用sudo来为我们的指令提权,使其有root的权限。

我们要想使用sudo,就需要我们自己去配置后方能使用,下面是配置方法。

  1. 切换到root用户

    在这里插入图片描述

  2. 打开/etc/sudoers文件

    在这里插入图片描述

  3. 找到下面的一行,添加需要使用sudo的用户

    在这里插入图片描述

    使用以下格式添加用户使其可以使用sudo

    用户      ALL=(ALL)       ALL
    
  4. 退出root用户

    //方法1
    ctrl+d
    
    //方法2
    su 用户名
    

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

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

相关文章

学习C语言笔记:浮点类型float、double和long double

浮点类型能表示包括小数在内更大范围的数。浮点数的表示类似于科学计数法(即用小数乘以10的幂来表示数字)。该记数系统常用于表示非常大或非常小的数。 float C语言规定,float类型必须至少能表示6位有效数字,且取值范围至少是~…

【阶段二】Python数据分析Pandas工具使用03篇:数据预处理:多表合并与连接

本篇的思维导图: 数据预处理:多表合并与连接 将表结构相同(即变量个数和变量类型均相同)的多张表纵向合并到一张长表中,或者将多张表的变量水平扩展到一张宽表中。 需要注意的是,对于多表之间的纵向合并,则必须确保多表的列数和数据类型一致;对于多表之间的水平扩展,…

电子邮件帐户受损报告,请查收!

我们收到有关恶意访问 Ambire Wallet 电子邮件帐户的报告。 所有这些账户都是用在 CoinMarketCap/Ledger/其他黑客事件中被破坏的电子邮件地址注册的。 我们的内部调查显示,Ambire 的内部系统没有被泄露。我们调查的所有受影响的账户都是因为他们的电子邮件被泄露&…

FOFA(一): FOFA入门

文章目录一、FOFA是什么二、Fafo的使用1. 用户注册2. 一般使用3. 高级用法三、界面解释一般检索结果ip聚合:统计:以ip为单位的资产数据统计:四、API参考一、FOFA是什么 部署在互联网上的网络设备资产信息搜索引擎。旨在尽可能多的对全球IT设备资产进行信息收集、 漏洞扫描&…

java知识图谱+Java语言特点+常用dos命令+Java程序总结

java知识图谱高级语言Java语言特点注释单行注释 //多行注释/* */作用:1.对程序的编写进行解释说明,增强可读性2.调试所写代码单行/多行注释不参与编译;多行注释不可嵌套使用文档注释(Java特有)/** */注释内容可被JDK提…

系统治理 体系规划新型数据安全防护体系

声明 本文是学习2022中国工业数据勒索形势分析报告. 下载地址 http://github5.com/view/55028而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 工业数据勒索应急响应事件攻击者分析 应急响应事件攻击者分析以2022年1-9月所有工业数据勒索应急数据为支撑…

Hadoop HDFS

Hadoop HDFS分布式文件系统分布式文件系统的优点HDFS(Hadoop分布式文件系统)应用常见hdfs集群存储机制元数据管理namespace分布式文件系统 既然我们要学习hdfs那就不能不提分布式文件系统 文件系统是一种存储和组织数据的方法,实现了数据的存储、分级组织、访问和…

Linux DNS 解析与配置 nslookup使用 与 /etc/resolv.conf文件的配置

Linux DNS 解析与配置 序 当我接收到一批新的服务器时,尝试连接外网,比如访问百度的首页: curl www.baidu.com发现报错,不能解析正确的主机名。这个其实就是主机在解析主机名时没能正确发现对应的主机的 ip。当我们使用类似于域…

华为交换机配置笔记

交换机(Switch)是一种用于电信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路,最常见的交换机是以太网交换机,其他常见的还有电话语音交换机、光纤交换机等,交换机是集线器的升级替代产品,理论上讲交换机就是按照通信两端传输信息的需求,将需要的…

ONES 入选极客公园「2022 中国创新力量 50 」榜单

极客公园调研发现,2022 年是企业服务的「双杀」转折点:内部造血的难度升级,外部输血的可能性降低。为了表彰逆流而上的企服公司,极客公园对其给予了重点鼓励和点评。其中,企业级研发管理平台 ONES 入选了极客公园 2022…

vue js游戏,抗疫小游戏,抗疫的汤圆,仅以此小游戏献给所有为抗击疫情做出贡献的人

vue js游戏,抗疫小游戏,抗疫的汤圆,仅以此小游戏献给所有为抗击疫情做出贡献的人 完整代码下载地址:vue js游戏,抗疫小游戏,抗疫的汤圆 建议在pc上使用Chrome浏览器进行访问,如果只能手机玩&a…

还不快收藏起来!何恺明全网最全论文合集

原创/文 BFT机器人 人物简介 何恺明,Facebook AI Research (FAIR) 的一名科学家,研究领域包括计算机视觉和深度学习,并且在计算机视觉和深度学习方面发表了众多极具影响力的论文。 他发表的论文中,有关深度残差网络 (ResNets) 的…

当下的零售新进化,同以往的电商时代还是有着很多区别的

一场数字化的浪潮,正在各行各业深刻上演着。在零售领域,亦不例外。以往,提及零售,我们更多地想到的是,各式各样的电商平台,我们看到的是,各式各样的电商模式;现在,提及零…

学习一下如何使用python实现一个超级卡哇伊的五角星吧

Hello呀朋友们~ 今天实在想不出要写啥了,但是前两天有朋友让我写一个五角星,这个好说呀,必须安排的妥妥当当的!!!!! 在这里我就不多说了,这个也挺简单的,那…

新代机床联网

一、设备信息确认 1、确认型号 数控面板拍照确认: 此系统为:6TA 2、确认通讯接口 1、数控面板的后面 2、其他位置 其他位置一般是前面两个位置用网线引出来后做的网口母头,常见在机床数控面板侧面,机床电器柜后面等等。 3、…

Kubernetes知识扫盲

1. Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应…

SQL数据库—事务(ACID特性、数据库恢复技术)

各位朋友大家好,博主新创立了一个公众号《自学编程村》哈,感兴趣的可以也关注关注捏~~ 【简介】 它是由村长发起,然后邀请了一些小伙伴来作为自己的嘉宾,不定时的为大家分享学习、生活、信息。他们中间,有来自中国科学…

调整网关或iptables导致ssh连接未响应

同一子网之间可以相互连接,问题服务器可以通过同一子网的其他机器ssh连接,通过VPN可以直接连接到同一子网的其他服务器,但是无法直接连接问题服务器 ssh连接一直停在连接状态 xshell连接如图 问题服务器A无法上外网,之前调整过网…

node.js创建网站实例2

1.在cmd中输入:npm install express -s 2.在demo01文件夹中新建api.js,代码如下: // 1.先引入express模块,express是一个函数 var express require("express") //2.执行express函数;用变量接收express函数…

《图的基础概念》

【一】图的基本概念 图是由顶点集合和顶点之间的关系组成的一部分&#xff1a;G&#xff08;V&#xff0c;E&#xff09;&#xff0c;其中&#xff1a; 顶点集合V {x|x属于某个数据对象集}是有穷非空集合&#xff1b; E {(x,y)|x,y属于V}或者E {<x, y>|x,y属于V &…