当前位置: 首页 > java >正文

【Linux系统】vim编辑器的使用

文章目录

  • 一、vim编辑器的简单介绍
  • 二、vim的一键化配置方案(目前只支持 Centos7 x86_64)
  • 三、vim编辑器在各模式下的操作
    • 1.vim的使用 以及 各模式间的切换
    • 2.普通模式(Normal Mode,初始默认处于该模式)
    • 3.替换模式(Replace Mode) 和 插入模式(Insert Mode)
    • 4.视图模式(Visual Block Mode)
    • 5.命令行模式(Command Mode)


一、vim编辑器的简单介绍

  1. Linux下的Vim编辑器是一款功能强大的多模式文本编辑器,其核心特点是通过不同模式实现高效编辑。 Vim包含三种主要模式:
  • 普通模式(Normal Mode):默认进入的模式,用于文本导航、复制/粘贴等操作(按Esc返回此模式)
  • 插入模式(Insert Mode):在普通模式下按i/a/o等键进入,可直接编辑文本
  • 命令行模式(Command Mode):在普通模式下按shift+;(相当于:)进入,支持保存文件、退出等指令,也可以进行内容替换,找字符串,列出行号等操作

  1. 再补充两个常用模式:
  • 替换模式(Replace Mode):在普通模式下按shift+r(相当于 R)进入。替换光标所在处的字符,逐个替换光标会自动后移,直到按下「ESC」键退出替换模式为止。

  • 视图模式(Visual Block Mode):在普通模式下按「ctrl + v」进入。视图模式下可以进行批量化操作。

Vim编辑器其实有好多种模式,但基本上掌握以上5种模式就足够使用。
在命令行模式下,输⼊「help vim-modes」 ,可以查看vim编辑器的所有模式。

二、vim的一键化配置方案(目前只支持 Centos7 x86_64)

  1. 在gitee搜索开源项目vimforcp:
    在这里插入图片描述

  2. 点进这个项目下翻到项目简介:在这里插入图片描述

第一步(想在哪个用户下让vim配置生效, 就在哪个用户下执行这个指令。不要在 root 下执行):

[zh@iZbp1dr1jtgcuih41mw88oZ ~]$ curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

第二步(按照提示输入 root 密码):
在这里插入图片描述
第三步(等待安装成功之后,再输入 “source ~/.bashrc”,使 vim 配置生效):
在这里插入图片描述

[zh@iZbp1dr1jtgcuih41mw88oZ ~]$ source ~/.bashrc

三、vim编辑器在各模式下的操作

1.vim的使用 以及 各模式间的切换

  1. vim的使用语法:

(1) vim 文件名(打开指定文件时,光标会停在上次退出该文件时停留的位置):

[zh@iZbp1dr1jtgcuih41mw88oZ ~]$ ls -l
total 4
-rw-rw-r-- 1 zh zh 373 May  4 15:59 code.c
[zh@iZbp1dr1jtgcuih41mw88oZ ~]$ vim code.c

在这里插入图片描述
(2)vim 文件名 +行号(打开指定文件时,光标会默认停在指定行):

[zh@iZbp1dr1jtgcuih41mw88oZ ~]$ vim code.c +10

在这里插入图片描述


  1. vim下各模式间的切换(vim打开文件时,初始默认处于普通模式)
    在这里插入图片描述

2.普通模式(Normal Mode,初始默认处于该模式)

  1. 控制光标的移动:

• vim可以直接用键盘上的方向键来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移⼀格
• 「#h」、「#j」、「#k」、「#l」,分别控制光标左、下、上、右移 # 格
• 「 $ 」:移动到光标所在行的“行尾”
• 「^」:移动到光标所在行的“行首”
• 「w」:光标跳到下个 “单词” 的开头
• 「#w」: 光标跳到下第 # 个 “单词” 的开头
• 「b」:光标回到上个 “单词” 的开头
• 「#b」:光标回到上第 # 个 “单词” 的开头
• 「gg」:光标移动到文本首行开头
• 「shift+g」:光标移动到文本尾行开头
• 「n + shift+g」:光标移动到文本第 n 行开头
• 「ctrl + b」:屏幕往“后”移动一页
• 「ctrl + f」:屏幕往“前”移动一页

// # 代表数字


  1. 删除内容:

• 「x」:每按⼀次,删除光标所在位置的⼀个字符
• 「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
• 「X」:大写的X,每按⼀次,删除光标所在位置的“前面”⼀个字符
• 「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符
• 「dd」:删除光标所在行
• 「#dd」:从光标所在行开始删除 # 行


  1. 剪切功能:

•「dd」+ 「p」:剪切一行
•「#dd」+ 「p」:剪切 # 行


  1. 复制粘贴:

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


  1. 查找光标处于的 “单词”:

• 「shift+#」:在文本中查找光标处于的 “单词”。(n:跳转到下一个;N:跳转到上一个)注意:此处的 ‘#’ 是字符,不指代数字


  1. 撤销和恢复:

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


  1. 替换字符:

• 「r」:替换光标所在处的字符(输入 r 后,再输入替换后的字符)。
• 「#r」:把光标所在处往后的 # 个字符替换为同一个字符(输入 #r 后,再输入替换后的字符)。


  1. 字母大小写替换:

• 「shift+`」(相当于 ~):从光标位置开始进行字母的大小写替换(长按可以一直替换到行尾)


3.替换模式(Replace Mode) 和 插入模式(Insert Mode)

  1. 在普通模式下,按「shift+r」(相当于 R)切换成替换模式(Replace Mode)。

替换模式:替换光标所在处的字符,逐个替换光标自动后移,直到按下「ESC」键退出替换模式为止。

  1. 在普通模式下,按i/a/o等键均可切换成插入模式(Insert Mode),可直接编辑文本
    // 按o进入插入模式时会另起一行

进入插入模式后,各种命令都无效了,因为全都被视为字符输入到文本内容中。
光标移动只能使用上下左右方向键。


4.视图模式(Visual Block Mode)

在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)。视图模式下可以进行批量化操作。

  1. 同时在多行文本内容前(或 后)添加指定内容(以批量化注释为例):

(1)在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)

在这里插入图片描述
(2)控制光标移动选定区域(普通模式下控制光标移动的方式中除了方向键控制外,均可以使用)

在这里插入图片描述
(3)区域选定结束后,按「shift + i」(相当于 I)切换成到插入模式(在选定内容前添加指定内容)
注: 按「shift + a」(相当于 A)切换成到插入模式是在选定内容后添加指定内容

在这里插入图片描述
(4)进入插入模式后,写入内容(因为我想实现批量化注释,所以写入了 // )

在这里插入图片描述
(5)写入内容之后,按「ESC」键退出插入模式,这时会发现在视图模式下选定的所有行前都添加了 // 内容

在这里插入图片描述


  1. 指定区域删除(以批量化去注释为例):

(1)在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)。控制光标移动选定区域
在这里插入图片描述
(2)选定区域之后,按「d」进行删除,删除后会自动退出到普通模式

在这里插入图片描述


  1. 指定区域内容替换(替换成同一个字符):

(1)在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)。控制光标移动选定区域

在这里插入图片描述
(2)选定区域之后,先按「r」,再输入想替换成的字符(例:示例中输入了 a)。替换后会自动退出到普通模式

在这里插入图片描述


  1. 复制指定区域内容:

(1)在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)。控制光标移动选定区域

在这里插入图片描述
(2)选定区域之后,按下「y」复制指定区域内容。复制后会自动退出到普通模式

在这里插入图片描述
(3)移动光标到目标位置,按「p」粘贴

在这里插入图片描述


  1. 指定区域内容中字母大小写替换:

(1)在普通模式下,按「ctrl + v」切换成视图模式(Visual Block Mode)。控制光标移动选定区域

在这里插入图片描述
(2)选定区域之后,按「shift+`」(相当于 ~)对指定区域内容中字母大小写进行替换。替换后会自动退出到普通模式

在这里插入图片描述


5.命令行模式(Command Mode)

在普通模式下,按「shift+;」(相当于 :)切换成命令行模式(Command Mode)。一定要先切换到命令行模式,才能执行下面的指令:

  1. 保存文件 和 退出文件的操作:

• 「w」: 在冒号输入字母「w」就可以将文件保存起来
• 「q」:按「q」就是退出文件。如果无法离开vim(一般就是文件编辑之后没有保存),可以在「q」后跟⼀个「!」强制离开vim(会导致编辑后未保存的内容恢复为原来内容)。
• 「wq」:⼀般建议离开时,搭配「w」⼀起使用,这样在退出的时候还可以保存文件。
• 「!」:强制执行。「w」、「q」和「wq」后都可以跟「!」


  1. 列出行号 和 取消行号:

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


  1. 跳到文件中的某⼀行:

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


  1. 查找字符串:

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


  1. 替换字符串:

• 「s/原字符串/目标字符串/」:可以对光标所在的行第一个匹配的原字符串进行替换
• 「s/原字符串/目标字符串/g」:可以对光标所在的行所有匹配的原字符串进行替换
• 「%s/原字符串/目标字符串/g」:可以替换整个文件中所有匹配的原字符串
• 「%s/原字符串/目标字符串/cg」:如果你不想直接替换所有的匹配项,而是希望在每次替换时都进行确认,可以使用这个命令。这样在替换过程中, Vim 会弹出提示,询问你是否要替换每一个匹配的字符串,根据你可以需要输入 y(是)、n(否)等命令来决定是否替换。


  1. vim的命令行模式可以当linux命令行输入linux命令:

•「!命令」:先输入「!」,紧接着就可以输入linux命令并执行了。执行完毕后按任意键返回vim的普通模式

示例演示(在vim的命令模式执行 ls -l 命令行命令):

第一步(在命令模式输入 !ls -l ,再按回车执行该命令)

在这里插入图片描述
在这里插入图片描述
第二步(执行完毕后按任意键返回vim的普通模式)

在这里插入图片描述


http://www.xdnf.cn/news/4333.html

相关文章:

  • FoMo 数据集是一个专注于机器人在季节性积雪变化环境中的导航数据集,记录了不同季节(无雪、浅雪、深雪)下的传感器数据和轨迹信息。
  • C语言编程--递归程序--求数组的最大元素值
  • 油气地震资料信号处理中的NMO(正常时差校正)
  • 【网络篇】传输层TCP协议的确认应答,超时重传机制
  • IT咨询——企业数据资产怎样评估
  • 满分PPT | 基于数据运营的新型智慧城市实践与思考智慧城市数据中台解决方案智能建筑与智慧城市建设方案
  • 基于nacos实现动态线程池设计与实践:告别固定配置,拥抱弹性调度
  • LabVIEW与 IMAQ Vision 机器视觉应用
  • C++类与对象基础续
  • 15.命令模式:思考与解读
  • 毫米波雷达原理(最通俗的解释)
  • MATLAB程序演示与编程思路,相对导航,四个小车的形式,使用集中式扩展卡尔曼滤波(fullyCN-EKF)
  • go 编译报错:build constraints exclude all Go files
  • Python使用爬虫ip抓取热点新闻
  • autojspro怎么免费用
  • 【原创分享】魔音变声器内含超多语音包实时变声
  • C#中从本地(两个路径文件夹)中实时拿图显示到窗口中并接收(两个tcp发送的信号)转为字符串显示在窗体中实现检测可视化
  • 【Wandb】搜索框仅支持正则匹配,不接受“tags:“前缀查询
  • 知乎前端面试题及参考答案
  • 【计算机网络】TCP为什么可靠?解决了哪些问题?
  • 数字文明时代开源技术驱动的商业范式重构:基于开源AI大模型、AI智能名片与S2B2C商城小程序源码的协同创新研究
  • GD32F470+CH395Q
  • Odoo 开发:揭秘表单视图中“添加行”按钮的出现条件
  • Netty 是一个基于 Java NIO 的高性能网络通信框架
  • 基于SSM实现的健身房系统功能实现一
  • C++复习
  • Linux进程间通信(上)(21)
  • Unity学习笔记二
  • Java 8 非对称加密代码示例
  • cpp学习笔记2--class