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

简单介绍一下vim

简单介绍一下vim

  • 一、vim是什么?
  • 二、vim的优点
  • 三、vi/vim的使用
    • 命令模式
    • 输入模式
    • 底线命令模式
  • 四、vi/vim 按键说明
      • (一)命令模式可用的光标移动、复制粘贴、搜索替换等
        • 移动光标的方法:
        • 搜索替换的方法
        • 删除、复制与贴上的方法
      • (二)一般模式切换到编辑模式的可用的按钮说明
      • (三)一般模式切换到指令行模式的可用的按钮说明
      • (四)vim 环境的变更

一、vim是什么?

Vim 是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

vim 键盘图
在这里插入图片描述

二、vim的优点

  • 兼容性:vi 是 Unix-like 系统的标准组件,是POSIX 标准的一部分,这意味着所有遵循 POSIX 标准的系统都需要提供 vi 或兼容的编辑器。这确保了应用程序和脚本在不同系统间的兼容性。
  • 轻量级:vi 是一个轻量级的编辑器,它不需要图形用户界面(GUI),可以在命令行界面中运行。这使得它非常适合在资源受限的环境中使用,如服务器、嵌入式系统或远程登录。
  • 功能强大:尽管 vi 的界面相对简单,但它提供了强大的文本编辑功能,包括多级撤销、宏录制、正则表达式搜索和替换等。
  • 可定制性:vi 可以通过配置文件 .vimrc(对于 Vim)或 .exrc 进行定制,允许用户根据自己的需求调整编辑器的行为。
  • 性能,系统支持:处理大型文件时,它能够快速加载和编辑,而不会消耗大量系统资源。vi/Vim 拥有一个活跃的社区,提供了大量的插件和扩展,这使得编辑器能够适应不同的编程语言和开发环境。

三、vi/vim的使用

基本上 vi/vim 共分为三种模式。

  • 命令模式(Command Mode)(一般模式,普通模式)
  • 输入模式(Insert Mode)
  • 命令行模式(Command-Line Mode)
    在这里插入图片描述

命令模式

用户刚刚启动 vi/vim,便进入了命令模式,命令模式下输入的字符会被当做命令执行。

命令模式只有一些最基本的命令,仍要依靠底线命令行模式输入更多命令。基本命令有:

i -- 切换到输入模式,在光标当前位置开始输入文本。
x -- 删除当前光标所在处的字符。
: -- 切换到底线命令模式,以在最底一行输入命令。
a -- 进入插入模式,在光标下一个位置开始输入文本。
o:在当前行的下方插入一个新行,并进入插入模式。
O -- 在当前行的上方插入一个新行,并进入插入模式。
dd -- 剪切当前行。
yy -- 复制当前行。
p(小写) -- 粘贴剪贴板内容到光标下方。
P(大写)-- 粘贴剪贴板内容到光标上方。
u -- 撤销上一次操作。
Ctrl + r -- 重做上一次撤销的操作。
:w -- 保存文件。
:q -- 退出 Vim 编辑器。
:q! -- 强制退出Vim 编辑器,不保存修改。
. :重复插入,:在普通模式下,按下.键会重复上一次在插入模式(Insert Mode)中所做的更改。这包括插入的文本、删除的文本、替换的文本等。

输入模式

允许用户插入或修改文本的模式。

  • Shift 组合:使用 Shift 键与字母键或数字键组合,可以输入大写字母或特殊字符。例如,按住 Shift 键并同时按下 ‘1’ 键可以输入感叹号 ‘!’。

  • 退格和删除:
    在输入模式中,Backspace 键通常用于删除光标左侧的字符。
    Delete 键(或在某些键盘上是 Del 键)通常用于删除光标下的字符。

  • 方向键,在文本中移动光标

  • HOME/END,移动光标到行首/行尾

  • Page Up/Page Down,上/下翻页

  • Insert,切换光标为输入/替换模式,光标将变成竖线/下划线

  • ESC,退出输入模式,切换到命令模式

  • 插入特殊字符:某些特殊字符可能需要特定的按键组合来输入,比如使用 Ctrl 键与字母键组合输入控制字符。

  • 插入换行符:按 Enter 键可以在当前光标位置插入一个换行符,开始新的一行。

  • 使用 Tab 键:Tab 键可以插入一个制表符,其宽度可以在 Vim 配置中设置。

底线命令模式

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

:w:保存文件。
:q:退出 Vim 编辑器。
:wq:保存文件并退出 Vim 编辑器。
:q!:强制退出Vim编辑器,不保存修改。

四、vi/vim 按键说明

(一)命令模式可用的光标移动、复制粘贴、搜索替换等

移动光标的方法:

在这里插入图片描述)

搜索替换的方法

在这里插入图片描述

删除、复制与贴上的方法

在这里插入图片描述

(二)一般模式切换到编辑模式的可用的按钮说明

在这里插入图片描述

(三)一般模式切换到指令行模式的可用的按钮说明

在这里插入图片描述

(四)vim 环境的变更

配置文件是 ~/.vimrc(对于 Unix-like 系统,包括 Linux 和 macOS),或者 %USERPROFILE%_vimrc(对于 Windows)。

显示行号:
(在任何模式下输入以下命令,一般是命令模式)

:set nu	显示行号,设定之后,会在每一行的前缀显示该行的行号
:set nonu	与 set nu 相反,为取消行号!

(要使 Vim 每次启动时都显示行号,您可以在 Vim 配置文件中添加以下行)

set number
set nonumber

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Uniapp与第三方应用数据通讯
  • 【数据结构】详解堆排序当中的topk问题(leetcode例题)
  • HTML 中使用 JavaScript 的具体方式
  • PHP实现一个简单的接口签名方法以及思路分析
  • 单片机(STM32)与上位机传输浮点数
  • 20240606更新Toybrick的TB-RK3588开发板在Android12下的内核
  • kafka-生产者事务-数据传递语义事务介绍事务消息发送(SpringBoot整合Kafka)
  • 个人博客搭建
  • Android 蓝牙profile的配置
  • [数据集][图像分类]人种黄种人白人黑人等分类数据集56000张7类别
  • 【Oracle】Oracle导入导出dmp文件
  • 【Golang】Go语言中defer与return的精妙交织:探索延迟执行与返回顺序的微妙关系
  • Webpack 从入门到精通-基础篇
  • Linux网络命令——tcpdump
  • 高考分数查询结果自动推送至微信(卷II)
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [译]Python中的类属性与实例属性的区别
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 345-反转字符串中的元音字母
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • iOS | NSProxy
  • leetcode-27. Remove Element
  • node.js
  • nodejs:开发并发布一个nodejs包
  • React 快速上手 - 07 前端路由 react-router
  • 工程优化暨babel升级小记
  • 检测对象或数组
  • 解析 Webpack中import、require、按需加载的执行过程
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 使用Gradle第一次构建Java程序
  • 试着探索高并发下的系统架构面貌
  • 一个完整Java Web项目背后的密码
  • hi-nginx-1.3.4编译安装
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #QT(一种朴素的计算器实现方法)
  • #数据结构 笔记一
  • #微信小程序:微信小程序常见的配置传旨
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • #职场发展#其他
  • $nextTick的使用场景介绍
  • (12)目标检测_SSD基于pytorch搭建代码
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (HAL库版)freeRTOS移植STMF103
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (四) 虚拟摄像头vivi体验
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一