【Linux】vim常用命令(多行注释、字符替换,命令模式、底行模式常用命令)

  • Post author:
  • Post category:linux

编辑器 – vim

为什么使用 vim 呢?因为它是所有 Linux 环境下自带的。

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

image-20220604192853281


vim 的基本概念

vim 的常见三种模式(其实有好多模式,掌握常见这 3 种即可)的功能如下:

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

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

  • 插入模式(Insert mode)

    只有在 Insert mode 模式下,才可以做文字输入编辑。

  • 底行模式(last line mode)

    文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。

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

拓展

安装vimforcpp插件

在使用vim前,可以安装一个vimforcpp插件,方便写C/C++代码。初学时不了安装和配置可以直接复制下面这段指令到命令行中:

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

常见错误

在这里插入图片描述
如果上一次编辑时异常退出了,就会产生这样的警告,这是因为异常退出导致.swp文件没有删除,当进入vim时遇到这样的警告,按”d”将.swp文件删除即可。


vim 的基本操作

刚进入 vim 编辑器时,是处于「命令模式」下的,你要切换到「插入模式」才能够输入文字。

  • 「命令模式」切换至「插入模式」,有 3 种方式:
    • 按「i」进入插入模式后,从当前光标所在位置开始输入文字。
    • 按「a」进入插入模式后,从当前光标所在位置的下一个位置开始输入文字。
    • 按「o」进入插入模式后,插入新的一行,从行首开始输入文字。
  • 「插入模式」切换至「命令模式」
    • 按「ESC」键。
  • 「命令模式」切换至「末行模式」
    • 按下「shift + :」,其实就是输入「 : 」冒号。
  • 退出 vim 操作,在「正常模式」中输入「 : 」冒号进入「末行模式」,然后输入:
    • w(保存当前文件)
    • wq(保存当前文件并退出 vim)
    • q!(不保存强制退出 vim)

image-20220604222506909


vim 在命令模式中的命令集 (🌟)

移、删、复、替、撤、更、跳,这是正常模式常用的七个类型的指令。

移动光标

  • vim 可以直接用键盘上的方向键来控制光标上下左右移动,但正规的 vim 是用小写英文字母「h」、「j」、「k」、「l」来分别控制光标向左、下、上、右移一格。
  • 按[gg]:移动到文本的开始
  • 按「shift+g / G」:移动到文章的最后
  • 按「 $ 」:移动到光标所在行的 “行尾”
  • 按「^」:移动到光标所在行的 “行首”
  • 按「w」:光标跳到下个字的开头(以单词为单位)
  • 按「e」:光标跳到下个字的字尾(以单词为单位)
  • 按「b」:光标回到上个字的开头(以单词为单位)
  • 按「#l」:光标移到该行的第 # 个位置,如:5l、56l
  • 按「#G」:光标移动到第 # 行
  • 按「#j / k」光标向下 / 上移动 # 行
  • 按「ctrl」+「b」:光标往上移动一页
  • 按「ctrl」+「f」:光标往下移动一页
  • 按「ctrl」+「u」:up 光标往上移动半页
  • 按「ctrl」+「d」:down 光标往下移动半页

删除文字

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

👉 这里的删除本质上都是剪切,可以通过p进行粘贴。

复制文字

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

替换操作

  • 「r」:替换光标所在处的字符(局部文本替换)。(常用
  • 「R」:替换光标所到之处的字符,直到按下「ESC」键为止(整体文本替换)。

字母大小写转换

  • 「shift+~」:先按下 shift 键,再按下波浪号 ~ 不要停,往后遇到的所有小写字母将被转成大写,所有大写字母将被转成小写。

撤销上一次操作:(常用

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

更改操作

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

跳至指定的行

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

vim 在末行模式中的命令集 (🌟)

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

列出行号

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

跳到文件中的某一行

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

查找字符命令

  • :/word:向光标之下寻找一个名称为 word 的字符串,如果第一次找的关键字不是您想要的,可以一直按「n」键向下继续寻找该关键字。(常用
  • :?word:向光标之上寻找一个字符串名称为 word 的字符串,如果第一次找的关键字不是您想要的,可以一直按「n」键向上继续寻找该关键字。

批量化替换字符命令

  • :%s/printf/cout/g(把文中所有 printf 替换成 cout,g –global 表示全局的意思)(常用见下文拓展

查看函数手册命令

  • :!man [选项] [函数名](按 q 退出手册)(常用

保存文件命令

  • 「w」: 在冒号输入字母「w」就可以将文件保存起来。可以跟一个感叹号「 w! 」强制保存。

退出 vim 命令

  • 「q」:按「q」就是退出,如果无法退出 vim,可以跟一个感叹号「 q! 」强制退出 vim。
  • 「wq」:一般建议退出时,搭配「w」一起使用,这样在退出的时候还可以保存文件。(常用

多文件多屏操作

  • 比如:如果我们想把 test.c 文件中的 10 行代码复制 test1.c 文件中,该如何操作呢?

  • :vs test1.c(在 vim 中打开 test1.c 文件,左右分屏)

    image-20220604231224066

  • 分屏模式下 按 ctrl + ww 组合键可以切换文件(w 要按两下)。

跑任何想跑的命令

  • 格式 :!命令(! 表示底行执行 bash 命令),比如:

    :!ls -l
    :!gcc -o test test.c
    

拓展(添加/取消多行注释 和 替换命令)(⭐)

vim 中批量添加 & 删除注释

多行注释:

  1. 进入命令行模式,按ctrl + v进入 visual block模式,然后按j, 或者k选中多行,把需要注释的行标记起来

  2. 再按「shift + i / I 」键(大写字母),进入“Insert” 插入模式,插入注释符,例如//

  3. 最后按「ESC」键,就会全部注释了

取消多行注释:

  1. 进入命令行模式,按ctrl + v进入 visual block模式,按字母l(L)横向选中列的个数,例如 // 需要选中2列

  2. 按字母j,或者k选定要去注释的行,将注释符号//两个斜杠全部覆盖

  3. d/x键就可全部取消注释

替换命令
替换的功能,在我们开发过程中可谓天天使用,使用命令如下:

0:%s/string1/string2/g

简单解释一下:

0:表示从第0行到最后一行搜索一个叫string1的字符串
%s : s表示切换到替换模式下去 
string1/string2,即把string1替换成string2
g : 强制替换不用提示

首先将光标移动至要进行替换的行,按”:“进入底行模式,键入s/,后面跟要被替换的字符,再键入”/“,后面跟替换后的字符,最后面再跟一个”/”。
如图:
在这里插入图片描述
这个指令的含义是,将光标所在行的main替换成linux。
替换结果:

image-20220925133854867

此外,还可可以在s前面加”%”,表示全文,或”num1,num2″指定行,而在后面加”g”表示当前行所有。

image-20220925134141765

这个语句的含义是,将全文所有的main替换成linux。
替换结果:

image-20220925134225454


如何配置 vim 编辑器(vim 配置成本太高,一般建议直接使用别人配置好的)

  • 配置文件的位置

    • 在目录 /etc/ 下面,有个名为 vimrc 的文件,这是系统中公共的 vim 配置文件,对所有用户都有效。

    • 在每个用户的主目录 ~ 下,都可以自己建立私有的配置文件,命名为:.vimrc

      比如 root 用户的 /root 目录下,通常已经存在一个 .vimrc 文件,如果不存在,则创建之。

    • 切换用户成自己,执行 su ,执行 cd ~ 进入自己的主工作目录。

      然后执行 vim .vimrc 打开自己目录下的 .vimrc 文件。添加配置选项即可。

  • 常见的一些配置选项

    • 设置语法高亮:syntax on
    • 显示行号:set nu
    • 设置 tab 缩进的空格数为 4:set shiftwidth=4
  • 使用插件配置 vim

    要配置好看的 vim,原生的配置可能功能不全,可以选择安装插件来完善配置,需要保证用户是你要配置的用户。


版权声明:本文为Y673789476原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。