为什么要学习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中一旦保存退出,之前的拷贝操作就不会再保存,下面很多操作同理。

    如图为复制一行和多行(yy + p):
    在这里插入图片描述

  • 替换

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

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

    如下图为进行撤销和撤销的恢复指令(u / ctrl + r):
    在这里插入图片描述

  • 更改

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

    如下图,进行大小写切换(shift + ~)
    在这里插入图片描述
    如下图进入替换模式(shift + r)
    在这里插入图片描述

  • 跳至指定的行

    • 【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 用户名
    

7.关闭vim时使用 ctrl + z 退出怎么解决?

当我们使用vim编写一个文件,不小心使用ctrl + z退出后,在次使用vim进入该文件,会遇到下面的情况
在这里插入图片描述
这个问题该如何解决呢?下面是我使用的方法,希望对你有帮助

  • 先在终端使用jobs命令,查看需要终止的vim文件的序号,还有其他的程序在后台运行也会显示,如下
    在这里插入图片描述
    接着使用fg 序号,打开该序号代表的文件,在使用正常的退出操作:wq!强制退出即可,弱遇到下面的提示输入y即可
    在这里插入图片描述
Logo

更多推荐