【学习笔记之Linux】工具之vim基本介绍

news2024/11/24 0:55:55

vim基本认识

  vim是一种多模式的编辑器,它是vi的升级版本,它兼容vi所有的指令并加入了一些新的特性在里面。vi是一个老式的文本编辑器,功能相当齐全,vim则是在vi之上更进了一步,拥有代码补全、编译及错误跳转等功能,被称为编辑器之神,就连vim的官网自己也说vim是一个程序开发工具而不是一个文字处理软件。
  vim拥有多种模式,每种模式的用法各不相同,每种模式之间可以进行切换。而我们最常用的有3-5种模式:命令模式(我们vim打开文件就是这个模式,也叫正常模式、普通模式)、插入模式(输入模式)、末行模式(底行模式)、替换模式、可视化模式。

vim常用模式

命令模式:
  用户一启动vim就进入命令模式,此状态下敲击键盘会被vim识别为命令,而非输入字符。这时可以控制屏幕光标的移动,字符、字或行的删除,移动复制某区段,可以切换至不同的模式。
  因为最开始的老式键盘并没有现在键盘中的一部分按键,所以vim设置了其他按键来实现对应的功能。同时应为按键有限,所以vim是区分大小写的,大小写不同,命令也是不同的。

vim命令模式中的常用命令
 光标移动相关命令:
  h/←:光标向左移动一个字符
  j/↓:光标向下移动一个字符
  k/↑:光标向上移动一个字符
  l/→:光标想有移动一个字符
  [Ctrl]+f:屏幕向下移动一页,相当于[Page Down]键
  [Ctrl]+b:屏幕向上移动一页,相当于[Page Up]键
  [Ctrl]+d:屏幕向下移动半页
  [Ctrl]+u:屏幕向上移动半页
  +:光标移动到非空格符的下一行
  -:光标移动到非空格符的上一行
  数字n+[space]:光标向右移动n个字符
  0/[home]:光标移动到这一行的第一个字符前一位
  ^:光标移动到所在行的行首
  $/[end]:光标移动到这一行的最后候一个字符处
  H:光标移动到屏幕最上方一行的第一个字符处
  M:光标移动到屏幕中央一行第一个字符处
  L:光标移动到这个屏幕最下方一行的第一个字符处
  G:光标移动至文本的最后一行
  数字n+G:光标移动至文本的第n行的第一个字符处,绝对位置
  gg(连按):光标移动至文本第一行第一个字符处
  数字n+[Enter]:光标向下移动n行,相对于当前位置移动
 删除:
  x:删除光标所在位置的字符,在x之前加上数字n,可以实现向后连续删除n个字符
  X:删除光标之前的一个字符,在X之前加上数字n,可以实现向前连续删除n个字符
  dd:剪切光标所在的那一行,在dd之前加上数字n,可以实现向下剪切n行
  d1G:删除光标所在行到第一行的内容
  dG:删除光标所在行到之后一行的内容
  d$:从光标所在处删除至该行的最后一个字符
  d0:从光标所在处删除至该行的第一个字符
 复制:
  yy:复制光标所在行,在yy之前加上数字n,可以向下复制n行
  y1G:复制光标所在行到第一行的所有内容
  yG:复制光标所在行到对吼一行的内容
  y$:复制光标所在处至该行第一个字符处的内容
  y0:复制光标所在处至该行最后一个字符处的内容
 粘贴:
  p:将已复制的内容,从光标所在行的之下开始粘贴
  P:将已复制的内容,从光标所在行的之上开始粘贴
 撤销:
  u:撤销上一个操作
  [Ctrl]+r:重做上一个动作,u与[Ctrl]+r可以相互撤回

  .(这里有一个点):重复上一个操作
 切换大小写:
  ~:将光标处的字母进行大小写转换
 切换模式:
  i/l:进入输入模式,i为从目前光标所在处输入,l为在目前所在行的第一个非空格符处开始输入
  a/A:进入输入模式,a为从光标所在的下一个字符处开始输入,A为从光标所在行的最后一个字符处开始输入
  o/O:进入输入模式,o为在光标的下一行处输入新的一行,O为在光标的上一行处输入新的一行
  s:进入输入模式,s为删除光标处字符开始输入
  r/R:进入替换模式,r只会取代光标所在的字符,R会不断向后取代字符,直到按下ESC键停止
  :([shift]+;):进入底行模式
  [ctrl]+v:进入视图模式

插入模式:
  只有在插入模式下,才能够进行文字输入,我们编写代码就是在该模式下。按下ESC键就会切换到命令模式。
末行模式:
  末行模式也就是底行模式,可以进行文件的保存或退出,也可以进行文件替换,按下ESC键会切换到命令模式。

底行模式常用命令
 搜索:
  /关键字:查找含有关键字的内容,并进行高亮显示,同时光标跳转至当前光标之后的第一个关键字处
  ?关键字:功能与上同,光标跳转至当前光标的前一个关键字处
  n:搜索出关键字之后,按n,光标跳转至下一个关键字处
  N:搜索出关键字之后,按N,光标跳转至上一个关键字处
 替换:
  r+一个字符:替换光标所在处的字符,一次只能换一个
  数字n1,数字n2s/关键字1/关键字2/g:在n1行至n2行之间,查找关键字1,并将其换成关键字2
  【1,$s/关键字1/关键字2/g】/【%s/关键字1/关键字2/g】:从第一行开始查找关键字1,将其替换成关键字2
  【1,$s/关键字1/关键字2/gc】/【%s/关键字1/关键字2/gc】:功能与上同,替换之前向用户确认是否替换
 存储、退出
  w:将编辑的数据写入文件,加上!可以强制写入
  q:退出vim,加上!可以强制退出
  wq:写入之后退出,加上!可以强制写入并退出
  ZZ:保存并退出
  ZQ:不保存,强制退出
  w[文件名]:将当前文件另存为,名字为方框中的文件名
 vim设置
  set nu:显示行号
  set nonu:取消行号

  常用模式关系图:
在这里插入图片描述
  vim键盘图:

在这里插入图片描述

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

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

相关文章

pytorch OutOfMemoryError

torch.cuda.OutOfMemoryError before: self.memory deque(maxlen50000) after: self.memory deque(maxlen500) ok.... pytorch模型提示超出内存cuda runtime error(2): out of memory - pytorch中文网 看到这个提示,表示您的GPU内存不足。由于我们经常在PyTo…

做外贸有没有好的软件?

在外贸电商行业中,邮件营销是非常重要的一种营销方式之一。除了性价比高,他还能对目标客户进行精准营销。但是,对于刚开始做的公司来讲,不注意方法和细节也难收获到理想的营销效果。 一、问题 1)不管理邮箱联系人 只…

13.Isaac教程--模型制作

模型制作 ISAAC教程合集地址: https://blog.csdn.net/kunhe0512/category_12163211.html 该软件包演示了具有软件定义装配工作流程的工厂场景。 在模拟工厂环境中,多个 AMR 在装配站之间运输材料,而每个装配站的机械臂拾取所需材料并将其放置在对接的 …

自定义el-pagination分页

项目场景: 提示:这里简述项目相关背景: vue项目使用el-ui库,由于原本的el-pagination显示字段和样式无法满足其他项目的设计要求,需要进行改动 el-ui官网: 改动后: 解决方案: 1…

golang字符串常见功能

文章目录1. 获取字符串长度2. 是否一xx开头3. 是否以xx结尾4. 是否包含5. 变大写6. 变小写7. 去两边8. 替换9. 分割10. 拼接11. string转换为int12. int转换为string13. 字符串和字节切片14. 字符串和rune切片15. string和字符1. 获取字符串长度 2. 是否一xx开头 3. 是否以xx结…

抖音seo优化排名

武汉微驱动科技有限公司 你有没有想过,同样是运营抖音,为什么别人的视频总是排在你的前面?你死磕创意,拍摄、剪辑,甚至比同行更投入,为什么他的收益总是高于你? 当下抖音搜索引擎的用户数量已经…

Nginx与LUA(1)

您好,我是湘王,这是我的CSDN博客,欢迎您来,欢迎您再来~HTTP服务器是相对于HTTP客户端来说的——HTTP客户端就是各种常用的「浏览器」,如IE、chrome、微信浏览器。当浏览器通过URL地址栏访问一个Web页面时&a…

【C++】STL六大组件之一——适配器(adapters)

目录1. 前言2. 初始适配器2.1 适配器的概念2.2 适配器的分类3. 容器适配器(container adapters)3.1 认识deque3.1.1 逻辑结构3.1.2 物理结构3.1.3 deque的迭代器3.1.4 选择deque做stack/queue底层容器的原因3.2 stack3.3 queue3.4 另一种容器适配器 ——…

阿里云计算巢 x GBase GCDW:自动化部署云原生数据仓库

近日,阿里云计算巢与天津南大通用数据技术股份有限公司(以下简称:GBASE)合作,双方融合各自技术优势,助力企业用户实现云上数据仓库的自动化部署,让用户在云端获取数据仓库服务“更简单”&#x…

【ESP32+freeRTOS学习笔记-(六)软件定时器】

目录1、软件定时器概念2、软件定时器的运行机制2.1 组成2.2 创建2.3 运行3、软件定时器的属性和状态3.1 定时器的周期3.2 定时器的类型3.3 定时器的状态4、软件定时器的回调函数原型5、定时器的使用5.1 创建定时器xTimeCreate()5.2 启动定时器xTimerStart()5.3 终止定时器xTime…

IPC进程间通信-system V 共享内存

🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸 文章目录一、共享内存原理二、共享内存的建立原理三、共享内存的创建四、共享内存的删除五、共享内存挂接到自己的地址空间六、从进程地址空间去掉与…

快过年了用Python抢红包

快过年了,刚刚收到了两个消息,一个好消息,一个坏消息。 先说好消息,好消息就是微信群里即将有人要发红包, 坏消息是我抢不上! 难道就这么放弃了吗?那就只能试试能不能通过编程的方式实现自动化…

基于轻量级YOLOV5+BIFPN的苹果瑕疵检测识别分析系统

BIFPN是一种比较经典有效的特征融合手段,在很多检测模型中都有集成应用,实际表现也验证了BIFPN的有效性,这里并不是要探讨BIFPN的原理内容,而是想集成这项技术,提升原有模型的性能表现,在我之前的一些文章中…

排序算法之冒泡排序

一般学习过编程的人都知道,排序算法有很多种,包括直接选择排序、直接插入排序、计数排序、快速排序、归并排序、冒泡排序等,在我看来,以上六种排序算法是必须要掌握的,今天,我们先来讲解一下冒泡排序算法&a…

Java高手速成 | 新增类Record的工作实例

01、什么是Record? Record 是Java新增的库类,在Java 14和Java 15中以预览(preview)形式公布。Record类用来自动生成对定义数据进行创建、设置、访问以及比较等代码,所以又被称作数据类(data class)。在一…

初级开发者福音:手把手教你实现数字滚动效果~

文章目录一、前言二、背景知识三、实现方案Step 1:分析需求Step 2:实现单个数字的滚动效果Step 3:组件接口设计Step 4:完善组件一、前言 前端数字滚动显示的场景很多,比如抽奖的时候,营造一种马上公布中奖…

[MySQL从入门到实战环境部署](超详细版)

MySQL从入门到实战环境部署1.部署CentOS1.1部署CenOS虚拟机步骤(1)基于VirtualBox(2)下载CentOS1.2环境部署过程2.部署MySQL1.部署CentOS 1.1部署CenOS虚拟机步骤 (1)基于VirtualBox 下载网址&#xff1…

Docker Compose:Docker Compose部署nacos初始化MySQL

Docker Compose:Docker Compose部署nacos初始化MySQL找初始化sql文件nacos初始化mysql-schema.sql文件内容docker-compose.yml上传到挂载目录运行docker-compose.yml访问nacos找初始化sql文件 先去官网下载nacos安装包 官方github地址:https://github.…

Centos7安装opengauss

安装包下载地址:https://www.opengauss.org/zh/download/注:本文介绍的是轻量版安装先创建一个系统用户(opengauss数据库不允许使用 root 用户安装)创建用户useradd omm设置密码passwd omm将安装包拷贝并解压到用户家目录 ~/openG…

linux-云服务器数据盘挂载失败导致进入维护模式

已经在华为云、AWS上面吃过这个亏了,老这样可不好,心怦怦跳的。 华为云是由于服务器升级配置后重启,数据盘名称变化导致进入维护模式。AWS则是由于重启后没有挂载上数据盘,手动编辑/etc/fstab文件错误导致进入维护模式。 究其原…