简单介绍一下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

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

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

相关文章

【算法】常用排序算法(插入排序、希尔排序、堆排序、选择排序、冒泡排序、快速排序、归并排序、计数排序)超详细

排序算法是数据结构相关知识中非常重要的一节,相信很多小伙伴对这部分知识一知半解。那么接下来,小编就要带领大家一起来进行对排序算法的深入剖析学习,希望本篇文章能够使你有所收获! 一.常见的排序算法 排序算法有很多种&#…

LINUX网络FTP服务

一、FTP服务 FTP服务:file transfer protocol :文件传输协议。在网络上进行双向传输,也是一个应用程序。不同的操作系统有不同的FTP软件,但使用的协议是一样的。 FTP协议基于TCP协议,有两个端口,即20和21。 20端口&…

基于xml的Spring应用(理解spring注入)

目录 问题: 传统Javaweb开发的困惑? 问题: IOC、DI和AOP的思想提出 问题: Spring框架的诞生 1. BeanFactory快速入门 2. ApplicationContext快速入门 3. BeanFactory和ApplicationContext的关系 基于xml的Spring应用 1. SpringBean的…

jmeter性能优化之mysql配置

一、连接数据库和grafana 准备:连接好数据库和启动grafana并导入mysql模板 大批量注册、登录、下单等,还有过节像618,双11和数据库交互非常庞大,都会存在数据库的某一张表里面,当用户在登录或者查询某一个界面时&…

Java入门基础11:面向对象高级一(static、extends继承)

Java面向对象高级特性有以下几个:继承,多态,封装,抽象,接口,匿名内部类,静态成员,final关键字,异常处理等。 我会将它分为三章详细讲,本章主要讲静态和继承 …

算法导论实战(六)(算法导论习题三十四、三十五章)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀算法启示录 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 前言 算法导论的知识点学习将持续性更新在算…

第十四周 6.4 内部类部分知识点

一、理解 1.定义在一个类内部的类称为内部类 2.语法: class 类名{ class 类名{} } 3.内部类编译之后生成独立的.class文件,文件命名为:外部类类名$内部类的类名.class 4.内部类分类:成员内部类、静…

初阶 《函数》 2.C语言中函数的分类

2.C语言中函数的分类 1.库函数 2.自定义函数 2.1 库函数 为什么会有库函数? 1.我们知道在我们学习C语言编程的时候,总是在一个代码编写完成之后迫不及待的想知道结果,想把这个结果打印到我们的屏幕上看看。这个时候我们会频繁的使用一个功能…

Nginx04-Nginx代理、反向代理实验、LNMP流程详解与排错思路

目录 写在前面Nginx04LNMP流程详解Nginx处理静态资源流程Nginx处理动态资源流程 LNMP排错LinuxNginxPHPMysql Nginx 代理概述正向代理反向代理区别 反向代理实验(Proxy模块)环境准备front配置lb01配置测试流程梳理总结 写在前面 这是Nginx第四篇&#xf…

【Linux】 安装rz 和sz

在 Linux 系统中,rz 和 sz 是两个用于在本地计算机与远程计算机之间安全传输文件的命令行工具。它们是 lrzsz 包的一部分,通常用于通过 SSH 连接传输文件。 打开终端: 首先,打开你的 CentOS 机器上的终端。 执行sz 提示下面信息…

王学岗鸿蒙开发(北向)——————(七、八)ArkUi的各种装饰器

arts包含如下:1,装饰器 ;2,组件的描述(build函数);3,自定义组件(Component修饰的),是可复用的单元;4,系统的组件(鸿蒙官方提供);等 装饰器的作用:装饰类、变量、方法、结…

操作系统入门系列-MIT6.828(操作系统工程)学习笔记(五)---- 操作系统的组织结构(OS design)

系列文章目录 操作系统入门系列-MIT6.S081(操作系统)学习笔记(一)---- 操作系统介绍与接口示例 操作系统入门系列-MIT6.828(操作系统工程)学习笔记(二)----课程实验环境搭建&#x…

【机器人和人工智能——自主巡航赛项】进阶篇

文章目录 案例要求创建地图rviz仿真 保存地图坐标点定位识别训练主逻辑理解语音播报模块匹配二维码识别多点导航讲解视频其余篇章 案例要求 创建地图 ./1-gmapping.sh 把多个launch文件融合在sh文件里面 rviz仿真 rviz是rose集成的可视化界面,查看机器人的各项数…

CPP初级:模板的运用!

目录 一.泛型编程 二.函数模板 1.函数模板概念 2.函数模板格式 3.函数模板的原理 三.函数模板的实例化 1.隐式实例化 2.显式实例化 3.模板参数的匹配原则 四.类模板 1.类模板的定义格式 2.类模板的实例化 一.泛型编程 泛型编程:编写与类型无关的通用代码…

vs2019 c++20规范 全局函数 ref 及模板类 reference_wrapper<_Ty> 的源码分析

这是个引用&#xff0c;可以包裹一个对象&#xff0c;相当于引用该对象&#xff0c;而不是在作为函数形参时产生值传递。因为模板 reference_wrapper<_Ty> 其实是封装了该对象的地址。下面以图示形式给出其重要的成员函数。模板其实都差不多&#xff0c;跟人也一样&#…

Linux | buildrootfs 添加mkfs.ext3/mkfs.ext4 支持

因个人需要&#xff0c;mkfs.ext3 但是项目中还没有这个命令 所以琢磨了半天 这里将其小记一下 在buildrootfsz中&#xff0c;需要将e2fsprogs 勾选上然后重新编译就好了 make menuconfig Target packages-> Filesystem and flash utilities-> e2fsprogs

JVMの静、动态绑定异常捕获JIT即时编译

在说明静态绑定和动态绑定之前&#xff0c;我们首先要了解在字节码指令的层面&#xff0c;JVM是如何调用方法的&#xff1a; 例如我有以下的代码&#xff0c;很简单就是在main方法中调用了另一个静态方法&#xff1a; public class MethodTest {public static void main(Strin…

论文阅读——MIRNet

项目地址&#xff1a; GitHub - swz30/MIRNet: [ECCV 2020] Learning Enriched Features for Real Image Restoration and Enhancement. SOTA results for image denoising, super-resolution, and image enhancement.GitHub - soumik12345/MIRNet: Tensorflow implementation…

数据库(29)——子查询

概念 SQL语句中嵌套SELECT语句&#xff0c;称为嵌套查询&#xff0c;又称子查询。 SELECT * FROM t1 WHERE column1 (SELECT column1 FROM t2); 子查询外部语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个。 标量子查询 子查询返回的结果是单个值&#xff08;数字&#xff…

电子设计入门教程硬件篇之集成电路IC(二)

前言&#xff1a;本文为手把手教学的电子设计入门教程硬件类的博客&#xff0c;该博客侧重针对电子设计中的硬件电路进行介绍。本篇博客将根据电子设计实战中的情况去详细讲解集成电路IC&#xff0c;这些集成电路IC包括&#xff1a;逻辑门芯片、运算放大器与电子零件。电子设计…