Linux基础:Vim编辑器实用指南

news2024/11/16 5:29:47

前言

在这里插入图片描述
Linux基础是学习云原生的重中之重,如果你还不知道学习路线可以参考:

耗时3个月,线下访谈30+ csdn大佬,规划出了我的云原生学习路线

文章目录

  • 前言
  • vim的介绍
  • vim的四种模式
    • 1. 插入模式
      • 1.1 进入插入模式:
      • 1.2 退出插入模式:
    • 2. 普通模式
      • 2.1 光标定位
      • 2. 2.对文本进行处理
    • 3. 命令模式
      • 3.1 文本内容查询
      • 3.2 命令行操作
      • 3.3 替换模式
    • 4. 可视化模式
  • vim同时操作多个文件
  • 总结

vim的介绍

vim号称编辑器之神,唯快不破,可扩展,各种插件满天飞。

vim源于vi, 但不是vi。 vi是美国计算机科学家比尔.乔伊编写并发布于1976年。

关键是这个只是他职业生涯的一个副产品,没有做什么维护。

vim是布莱姆.米勒于1991年发布。Vim最早的版本是1.14,它是基于Amiga计算机上的AmigaVI编辑器开发而来。

Vim的目标是提供一个兼容vi的编辑器,并在此基础上增加新特性和改进。

优秀的程序员都有个特性,感觉不爽就写个工具。

vim的四种模式

  1. 普通模式: vim启动后的默认模式,用来移动光标,删除文本,覆盖输入文本,恢复操作,粘贴文本
  2. 插入模式,输入i后进入插入模式,在这个模式下敲击键盘会往文字缓冲区增加文字,相当于普通的编辑器的编辑模式
  3. 可视模式: 选择多行文本进行复制,删除,排序等操作
  4. 命令模式: 执行内部和外部命令,通过: ? / 等进入命令模式,进行操作
  5. 替换模式: 替换模式也可以划入到命令模式

1. 插入模式

  • 首次进入文件 ---- 命令模式
  • 出现 “Insert” ---- 编辑模式
  • 退出插入模式:输入: ---- 命令行模式

1.1 进入插入模式:

  1. 按下 i 键,在当前光标位置之前插入文本。
  2. 按下 a 键,在当前光标位置之后插入文本。
  3. 按下 o 键,在当前行的下方插入一个新行,并进入插入模式。
  4. 按下 O 键,在当前行的上方插入一个新行,并进入插入模式。
  5. 按下 I 键,在当前行的行首插入文本。
  6. 按下 A 键,在当前行的行尾插入文本。
  7. 按下 s 键,删除当前字符并进入插入模式。
  8. 按下 S 键,删除当前行并进入插入模式。

1.2 退出插入模式:

按下 Esc 键,返回普通模式。

2. 普通模式

切换到命令行模式:
按下 : 键,进入命令行模式,可以执行各种命令。

2.1 光标定位

  • hjkl : 左下上右

在早期的计算机键盘上,没有专门的方向键。因此,在设计vi时,Bill Joy选择了键盘上与字母键相邻的 hjkl 键作为光标移动键。这些键被认为比较容易记忆和使用,并且位于键盘底部,因此可以更自然地控制光标移动。

具体来说,h、j、k、l 键是沿着键盘上的水平和垂直方向排列的

在这里插入图片描述

  • 快速定位

0 和 home键表示切换到行首, $和end键表示切换到行尾
gg 快速定位到文档的首行 , G定位到未行
3gg 或者 3G 快速定位到第3行

  • 通过打开文件进行光标定位
vim +<行号> <文件名>
vim <文件名> +"normal <行号>G"
Vim file : 第一行的行首 第一次打开文件
Vim file +5: 跳到第五行

[root@itlaoxin41 ~]# vim passwd +$
vim +10 filename.txt   # 打开文件后将光标定位到第10行

vim +10:20 filename.txt   # 打开文件后将光标定位到第10行第20列
Vim file +: 跳到最后一行
vim +/<搜索字符串> <文件名>
vim +/example filename.txt   # 打开文件并将光标定位到第一个匹配 "example" 的位置
Vim file +/root 第一次打开文件

2. 2.对文本进行处理

文本编辑分为删除,复制,粘贴,剪切,撤销

  • y复制(以字符为单位) :表示对单个字符进行复制,如果要复制整行,用yy(以行为单位)
    复制N行:Nyy,比如: 2yy ,表示复制2行
  • y$:从光标所在位置复制到行尾
  • y^:从光标所在位置复制到行首
  • dd(删除,以行为单位,删除当前光标所在行)
    删除N行: Ndd,比如: 2dd ,表示删除2行
  • d0:删至行首
  • d$:删至行尾
  • p : p粘贴
  • x 删除光标所在位置的字符
  • D 从光标处删除到行尾
  • u 撤销操作
  • r: 替换,或者说用来修改一个字符
  • ctrl +r 还原撤销过的操作,将做过的撤销操作再还原回去,也就是说撤销前是什么样,再还原成什么样

3. 命令模式

命令模式指的是 执行内部和外部命令,通过: ? / 等进入命令模式,进行操作

3.1 文本内容查询

  • /string(字符串) -----找到或定位你要找的单词或内容,如果相符内容比较多,我们可以通过N、n来进行向上向下查找,并且vi会对查找到的内容进行高亮显示,取消用 :noh
    -/^d :^意思表示以什么开头 ,查找以字母d开头的内容
  • /t$ $意思表示以什么结尾,,查找以字母t结尾的内容

3.2 命令行操作

常见和常用的命令操作

:q!:退出 Vim 
:wq:存盘退出 
:s:执行替换 
:!:执行外部命令 
:edit(一般缩写为 “:e”):编辑文件 
:w:写文件 
:r:读文件 并且插入
:help:查看帮助
:set nu 设置行号
:set ic 不区分大小写
:set list 显示控制字符 nolist
:set nonu 取消设置行号
:set noic 取消
:set ai 自动缩进,比如换行操作,设置这个功能后,可以在下次操作时进行自动换行
:noh 取消高亮显示

在vim中直接执行,属于临时操作,如果想永久生效,需要设置环境变量:

永久设置环境
/etc/vimrc设置后会影响到系统所有的用户
~/.vimrc#在用户的家目录下,创建一个.vimrc。这样只影响到某一个用户,没有自己建一个
例:

[root@itlaoxin63 ~]# cat /root/.vimrc 
set nu
  • 调用外部文件或者命令
    在命令行模式下操作:
:!ifconfig 
#调用系统命令

读取其他文件。(把其他文件中的内容追加到当前文档中)

:r /etc/hosts

3.3 替换模式

文本替换,可以使用

  1. 替换当前行中的文本:
:s/old/new:将当前行中的第一个匹配到的 "old" 替换为 "new"。
:s/old/new/g:将当前行中所有匹配到的 "old" 替换为 "new"。使用 g 标志表示全局替换。
:s/old/new/i:进行不区分大小写的替换。使用 i 标志表示忽略大小写。
  1. 替换整个文件中的文本:
:%s/old/new:将整个文件中的第一个匹配到的 "old" 替换为 "new"。
:%s/old/new/g:将整个文件中所有匹配到的 "old" 替换为 "new"。使用 g 标志表示全局替换。
:%s/old/new/gc:将整个文件中所有匹配到的 "old" 替换为 "new",并在替换前进行确认。
使用 c 标志表示确认每次替换。
  1. 限定替换范围:
:<start>,<end>s/old/new/g:在指定的行范围内进行全局替换。
将 <start><end> 替换为起始和结束行号。
  1. 使用正则表达式进行替换:
:s/pattern/replacement:使用正则表达式进行模式匹配和替换。
将 "pattern" 替换为正则表达式模式,"replacement" 替换为要替换成的内容。

常见案例:

:1,3 s/bin/itlaoxin 替换第13行中出现的第一个bin进行替换为itlaoxin
:1,3 s/bin/itlaoxin/g 替换第13行中查找到所有的bin进行替换为itlaoxin
:3 s/itlaoxin/aaaaa #只把第3行中内容替换了
 :% s/s/ssaass/g 将文本中所有的s替换成ssaass
:% s/IT/yyy/gi 将文本中所有的IT替换成yyy, 并且忽略IT的大小写
:% s@a@b@g 将文本中所有的a替换成b

4. 可视化模式

Vim中的可视化模式(Visual mode)允许你在编辑器中选择、操作文本块。在可视化模式下,可以选择字符、行或块,然后对选中的文本应用编辑命令。

批量加#号:

V模式(列)
进入v模式 移动光标选择区域
编程的时候需要进行多行注释:

  1. ctrl+v 进入列编辑模式
  2. 向下或向上移动光标,把需要注释、编辑的行的开头选中起来
  3. 然后按大写的I
  4. 再插入注释符或者你需要插入的符号,比如"#"
  5. 再按Esc,就会全部注释或添加了

删除:再按ctrl+v 进入列编辑模式;向下或向上移动光标 ;选中注释部分,然后按d或者x, 就会删除注释符号。

在这里有两个常用的参数:

缩进:按下">“键对所选文本进行缩进。
反缩进:按下”<"键对所选文本进行反缩进。

vim同时操作多个文件

1.打开多个文件:在终端中使用Vim命令打开多个文件,例如:

   vim file1.txt file2.txt

这将在Vim中打开file1.txt和file2.txt两个文件,并显示一个文件列表。你可以在文件列表中移动光标并按回车键打开你要编辑的文件。

  • 文件切换

使用命令 :n 或 :next 可以切换到下一个文件
使用 :prev 或 :previous 可以切换到上一个文件

2 .分割窗口:在Vim中,可以使用分割窗口的方式同时显示多个文件。

使用命令 :split 或 :sp 可以在水平方向上分割窗口
使用命令 :vsplit 或 :vsp 可以在垂直方向上分割窗口。
在分割窗口后,使用 Ctrl + W 组合键结合方向键进行窗口间的切换

  1. 其他方式:

方法1:以上下形势,打开两个文档

[root@itlaoxin63 ~]# vim -o /etc/passwd /etc/hosts

方法2:以左右方式打开两个文档

[root@itlaoxin63 ~]# vim -O /etc/passwd /etc/hosts

注:ctrl+ww 在两文档之间进行切换编辑。
大写O左右分屏,小写的o上下分屏

总结

以上就是vim的全部内容,可以在评论区留言探讨。

我是沐风晓月,在学习的路上一直前行,期待与你一起进步。

想学习更多内容,也可以关注我师父的博客:互联网老辛

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

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

相关文章

layui实现选择框搜索(下拉搜索)功能

1.可以使用官方介绍的方法&#xff0c;适用于form表单内的下拉搜索&#xff0c;外层需要使用layui-form样式&#xff0c;select标签内添加lay-search“”&#xff0c;此方法若外层不添加layui-form无法实现搜索功能&#xff0c;如下所示&#xff1a; 2.下面是另一种形式的下拉选…

【GESP】2023年06月图形化一级 -- 小猫寻宝

文章目录 小猫寻宝1. 准备工作2. 功能实现3. 设计思路与实现&#xff08;1&#xff09;角色、舞台背景设置a. 角色设置b. 舞台背景设置 &#xff08;2&#xff09;脚本编写a. 角色&#xff1a;Catb. 角色&#xff1a;Crystal 4. 评分标准 小猫寻宝 1. 准备工作 &#xff08;1&…

kafka生产者api和数据操作

Kafka 生产者 发送流程 消息发送过程中涉及到两个线程——main线程和Sender线程 main线程 使用serializer&#xff08;并非java默认&#xff09;序列化数据&#xff0c;使用partitioner确认发送分区 在main线程中创建了一个双端队列RecordAccumulator&#xff0c;main线程将…

从0到1搭建spring cloud alibaba +springboot+nacos+dubbo微服务

版本关系&#xff1a; spring cloud alibaba各组件对应关系 创建父工程&#xff0c;pom.xml配置如下&#xff1a; 由以上版本对应关系&#xff1a; springboot版本&#xff1a;2.3.2.RELEASE spring cloud 版本选择&#xff1a;Hoxton.SR9 spring cloud alibaba版本选择&#…

【UE5 Cesium】02-Cesium for Unreal 添加在线数据集

上一篇&#xff1a; 【UE Cesium】01-在虚幻5中使用Cesium 步骤 1. 点击“connected to Cesium ion as xxx” 在弹出的网址中点击“Asset Depot”&#xff08;资产仓库&#xff09; 找到“Melbourne Photogrammetry”点击添加&#xff0c;添加到你的账户中。&#xff08;这里我…

关于我花了一个星期学习微信小程序开发、并且成功开发出一个商城项目系统的心得体会

前言 一直做的PC端的项目开发&#xff0c;想做一下手机端的开发。后端基本上是不用怎么变化&#xff0c;主要变化的是前端&#xff0c;前端网页运行的地方不同&#xff0c;一个运行在手机&#xff0c;一个运行在PC网页上。微信小程序的开发和Vue框架开发有诸多相似之处&#xf…

smardaten用户手册全新发布!5个超实用的使用技巧(建议收藏!)

社区版发布后&#xff0c;很多用户自行下载安装使用&#xff0c;我们收到了一些客官关于产品文档的吐槽和建议~~于是&#xff0c;我们重新编排了用户手册&#xff0c;来帮助大家更快、更好、更简单的上手无代码开发。今天睿睿来跟大家分享用户手册更新点&#xff0c;以及如何使…

常用网络接口自动化测试框架

目录 一、RESTful&#xff08;resource representational state transfer)类型接口测试 (一&#xff09;GUI界面测试工具&#xff1a;jmeter &#xff08;二&#xff09;JAVA语言脚本测试&#xff08;HttpClient) 二、WebService接口测试 &#xff08;一&#xff09;GUI界…

JAVA1

文章目录 计算机的硬件与软件DOS命令 计算机的硬件与软件 DOS命令

Flink-任务槽和并行度的关系

任务槽和并行度都跟程序的并行执行有关&#xff0c;但两者是完全不同的概念。简单来说任务槽是静态的概念&#xff0c;是指TaskManager具有的并发执行能力&#xff0c;可以通过参数taskmanager.numberOfTaskSlots进行配置&#xff1b;而并行度是动态概念&#xff0c;也就是Task…

菜鸟推出新一代资产管理操作系统“WIN”

在6月28日的2023全球智慧物流峰会上&#xff0c;菜鸟地网发布了新一代资产管理操作系统“WIN”。基于菜鸟地网多年积累的全球一体化物流基础设施网络和资产管理经验&#xff0c;依托物联网、大数据、人工智能等物流科技能力&#xff0c;“WIN”将为客户提供全链路的资产开发和运…

学习笔记20230629 -- 《分享在jsp分布式项目支援开发衍生功能时遇到和解决的问题》

1.jsp项目的页面跳转&#xff0c;需要后端的java技术做支撑&#xff0c;在java的接口文件中写跳转接口&#xff0c;使用ajax去请求这个跳转接口&#xff0c;将返回的数据&#xff08;html标签代码&#xff09;&#xff0c;放到当前页面或弹窗的"content"属性中 2…

联合体结合位域的作用

联合体结合位域的作用 例如 这段代码&#xff0c;巧妙运用了位域和联合体的特性&#xff0c;rx370x_cfg_data_t位域控制每个成员的大小 使总大小为32&#xff0c;cfg_u32和位域的大小相等&#xff0c;因为联合体共用一个空间的原因&#xff0c;此时cfg_u32中存放的内容就是位域…

如何实现WinApp的UI自动化测试?自动化工具如何选择人?

WinApp&#xff08;WindowsAPP&#xff09;是运行在Windows操作系统上的应用程序&#xff0c;通常会提供一个可视的界面&#xff0c;用于和用户交互。例如运行在Windows系统上的Microsoft Office、PyCharm、Visual Studio Code、Chrome&#xff0c;都属于WinApp。常见的WinApp&…

遇到客户服务问题,有哪些解决方法?

在当今竞争激烈的商业世界中&#xff0c;客户服务已成为任何成功企业不可或缺的一部分。然而&#xff0c;许多企业仍然难以提供高质量的客户服务。今天&#xff0c;我们简单聊一聊客户服务会遇到哪些问题&#xff1f;怎么解决&#xff1f; 1、客户服务人员培训不足 中小企业在…

12 MFC常用控件(二)

文章目录 滑动条控件初始化滚动条滑动滚动条获取消息 微调控件进度条控件时间控件 滑动条控件 初始化滚动条 CSliderCtrl* sliderCtrl (CSliderCtrl*)GetDlgItem(IDC_SLIDER1);sliderCtrl->SetRange(0,100);//设置范围sliderCtrl->SetPos(50);//当前显示在50//int nPos…

常见的锁策略CAS

目录 一、乐观锁&悲观锁 1.1、悲观锁 1.2、乐观锁 二、重量级锁&轻量级锁 2.1、轻量级锁 2.2、重量级锁 三、自旋锁&挂机等待锁 3.1、自旋锁 3.2、挂起等待锁 四、读写锁&普通互斥锁 4.1、读写锁 4.2、互斥锁 五、公平锁&非公平锁 六、可…

HBase(7):大量数据的计数统计

当HBase中数据量大时&#xff0c;可以使用HBase中提供的MapReduce程序来进行计数统计。语法如下&#xff1a; $HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter 表名 1 启动YARN集群 启动yarn集群 start-yarn.sh 启动history server mr-jobhistory-da…

计算机视觉:多通道卷积操作

本文重点 前面我们学习了对灰度图的卷积操作(二维图像),本节课程我们学习RGB 彩色图像的卷积操作(三维立体)也就是说现在我们不仅想检测灰度图像的特征,也想检测 RGB 彩色图像的特征。 彩色图片的表示方法 彩色图片通常使用RGB(Red、Green、Blue)三个颜色通道来表示…

【裸机开发】UART 串口通信(一)—— 寄存器解析

目录 一、认识 UART 1、概念 2、帧格式 二、IO 复用为 UART 寄存器解析 1、原理图分析 2、寄存器解析 三、UART 相关寄存器解析 1、UART1_UCR1~4 2、UART1_USR1~2 3、波特率配置 4、UART1_URXD 5、UART1_UTXD 一、认识 UART 1、概念 UART 是一种通用的串行、异步…