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

一篇文章学会Vim

一篇文章学会Vim

声明:以下内容均为我个人的理解,如果发现错误或者疑问可以联系我共同探讨

简介

Vim是一个高度可定制的终端文本编辑器,它可以很方便的创建和修改任何类型的文本。作为vi的升级版,有许多新的特性(以下列出的特性为比较常用的,详细特性可以查看help vi_diff.):

  • 无限撤销:可以无限制的撤销
  • 可移植性:Vi仅在Unix上可用,Vim还可以在Windows、Macintosh,Amiga,OS / 2,VMS,QNX和其他系统上运行。
  • 语法高亮:当用Vim进行编程的时候,他可以根据正在编辑的文件类型,使其以内容以不同的颜色或样式突出显示。Vim捆绑了数百种语法突出显示规则集。
  • 图形用户界面:Vim在控制台上运行良好,也可以在许多GUI中本地运行,包括Mac OS和Windows。它还可以操作剪贴板。
  • vi兼容模式:紧要关头,您可以强制Vim像vi一样。使Vim与vi不兼容的所有改进和错误修复都已关闭,您将获得100%与vi兼容的编辑器。

Vim作为许多程序员最喜欢的文本编辑器之一,它具有像:多级撤销、代码补全、支持数百种编程语言和文本格式、强大的搜索和替换功能等。

安装与卸载

安装

Windows

先把安装包下载下来,然后根据提示安装。

Unix

在Github上下载源文件安装

Mac

在github下载,根据文件类型安装。

详细安装教程

卸载

Unix or Mac
源代码安装

在控制台输入

 make uninstall
软件包管理器安装

根据不同软件包管理器的卸载命令卸载

Windows

找到安装目录下的 “uninstall-gui” 程序进行卸载

教程

vimtutor

Vim自带教程vimtutor是你从零开始学习Vim最好的老师,教程包含了日常所需要的各个命令和功能,还有实操教学。如果你的系统语言是中文,那么打开vimtutor时默认是中文版的教程,中文版教程由梁昌泰 先生进行译制。在命令行中输入vimtutor,就可以打开该教程,学习完该教程大约需要30分钟左右。

有一款游戏Vim Adventure,可以作为学习Vim的一种放松。

Vimtutor章节小结
第一讲
  1. 光标在屏幕文本中的移动既可以用箭头键,也可以使用 hjkl 字母键。

    ​ h (左移) j (下行) k (上行) l (右移)

  2. 欲进入 Vim 编辑器(从命令行提示符),请输入:vim 文件名 <回车>

  3. 欲退出 Vim 编辑器,请输入 :q! <回车> 放弃所有改动。或者输入 :wq <回车> 保存改动。

  4. 在正常模式下删除光标所在位置的字符,请按: x

  5. 欲插入或添加文本,请输入:

    ​ i 输入欲插入文本 在光标前插入文本

    ​ A 输入欲添加文本 在一行后添加文本

特别提示:按下 键会带您回到正常模式或者撤消一个不想输入或部分完整的命令。

第二讲
  1. 欲从当前光标删除至下一个单词,请输入:dw

  2. 欲从当前光标删除至当前行末尾,请输入:d$

  3. 欲删除整行,请输入:dd

  4. 欲重复一个动作,请在它前面加上一个数字:2w

  5. 在正常模式下修改命令的格式是:

    operator  [number]  motion
    

    其中:

    ​ operator - 操作符,代表要做的事情,比如 d 代表删除

    ​ [number] - 可以附加的数字,代表动作重复的次数

    ​ motion - 动作,代表在所操作的文本上的移动,例如 w 代表单词(word),$ 代表行末等等。

  6. 欲移动光标到行首,请按数字0键:0

  7. 欲撤消以前的操作,请输入:u (小写的u),欲撤消在一行中所做的改动,请输入:U (大写的U),欲撤消以前的撤消命令,恢复以前的操作结果,请输入:CTRL-R

第三讲
  1. 要重新置入已经删除的文本内容,请按小写字母 p 键。该操作可以将已删除的文本内容置于光标之后。如果最后一次删除的是一个整行,那么该行将置于当前光标所在行的下一行。

  2. 要替换光标所在位置的字符,请输入小写的 r 和要替换掉原位置字符的新字符即可。

  3. 更改类命令允许您改变从当前光标所在位置直到动作指示的位置中间的文本。比如输入 ce 可以替换当前光标到单词的末尾的内容;输入 c$ 可以替换当前光标到行末的内容。

  4. 更改类命令的格式是:

    c [number] motion

第四讲
  1. CTRL-G 用于显示当前光标所在位置和文件状态信息。 G 用于将光标跳转至文件最后一行。先敲入一个行号然后输入大写 G 则是将光标移动至该行号代表的行。gg 用于将光标跳转至文件第一行。

  2. 输入 / 然后紧随一个字符串是在当前所编辑的文档中正向查找该字符串。输入 ? 然后紧随一个字符串则是在当前所编辑的文档中反向查找该字符串。完成一次查找之后按 n 键是重复上一次的命令,可在同一方向上查找下一个匹配字符串所在;或者按大写 N 向相反方向查找下一匹配字符串所在。CTRL-O 带您跳转回较旧的位置,CTRL-I 则带您到较新的位置。

  3. 如果光标当前位置是括号(、)、[、]、{、},按 % 会将光标移动到配对的括号上。

  4. 在一行内替换头一个字符串 old 为新的字符串 new,请输入 😒/old/new

    在一行内替换所有的字符串 old 为新的字符串 new,请输入 😒/old/new/g

    在两行内替换所有的字符串 old 为新的字符串 new,请输入 :#,#s/old/new/g

    在文件内替换所有的字符串 old 为新的字符串 new,请输入 :%s/old/new/g

    进行全文替换时询问用户确认每个替换需添加 c 标志 :%s/old/new/gc

第五讲
  1. :!command 用于执行一个外部命令 command。

    请看一些实际例子:

    (MS-DOS)     (Unix):!dir      :!ls      # 用于显示当前目录的内容。:!del FILENAME  :!rm FILENAME  # 用于删除名为 FILENAME 的文件。
    
  2. :w FILENAME 可将当前 VIM 中正在编辑的文件保存到名为 FILENAME 的文件中。

  3. v motion :w FILENAME 可将当前编辑文件中可视模式下选中的内容保存到文件FILENAME 中。

  4. :r FILENAME 可提取磁盘文件 FILENAME 并将其插入到当前文件的光标位置后面。

  5. :r !dir 可以读取 dir 命令的输出并将其放置到当前文件的光标位置后面。

第六讲
  1. 输入小写的 o 可以在光标下方打开新的一行并进入插入模式。输入大写的 O 可以在光标上方打开新的一行。

  2. 输入小写的 a 可以在光标所在位置之后插入文本。输入大写的 A 可以在光标所在行的行末之后插入文本。

  3. e 命令可以使光标移动到单词末尾。

  4. 操作符 y 复制文本,p 粘贴先前复制的文本。

  5. 输入大写的 R 将进入替换模式,直至按 键回到正常模式。

  6. 输入 :set xxx 可以设置 xxx 选项。一些有用的选项如下:

    ‘ic’ ‘ignorecase’ 查找时忽略字母大小写

    ‘is’ ‘incsearch’ 查找短语时显示部分匹配

    ‘hls’ ‘hlsearch’ 高亮显示所有的匹配短语

    选项名可以用完整版本,也可以用缩略版本。

  7. 在选项前加上 no 可以关闭选项: :set noic

第七讲
  1. 输入 :help 或者按 键或 键可以打开帮助窗口。

  2. 输入 :help cmd 可以找到关于 cmd 命令的帮助。

  3. 输入 CTRL-W CTRL-W 可以使您在窗口之间跳转。

  4. 输入 :q 以关闭帮助窗口

  5. 您可以创建一个 vimrc 启动脚本文件用来保存您偏好的设置。

  6. 当输入 : 命令时,按 CTRL-D 可以查看可能的补全结果。

    按 可以使用一个补全。

帮助

在控制台中输入vim就可以查看Vim的相关信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据图片所示我们可以知道,当前VIM的版本为8.0.1365,想退出需要输入":q",查看在线帮助文档可以输入":help",查看版本信息可以输入":help version8"

在英文模式下输入":help"回车后便可以看到

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里有详细的Vim教程,教你玩转Vim。

相关文章:

一篇文章学会Vim

一篇文章学会Vim 声明&#xff1a;以下内容均为我个人的理解&#xff0c;如果发现错误或者疑问可以联系我共同探讨 简介 Vim是一个高度可定制的终端文本编辑器&#xff0c;它可以很方便的创建和修改任何类型的文本。作为vi的升级版&#xff0c;有许多新的特性(以下列出的特性…...

面试算法91:粉刷房子

题目 一排n幢房子要粉刷成红色、绿色和蓝色&#xff0c;不同房子被粉刷成不同颜色的成本不同。用一个n3的数组表示n幢房子分别用3种颜色粉刷的成本。要求任意相邻的两幢房子的颜色都不一样&#xff0c;请计算粉刷这n幢房子的最少成本。例如&#xff0c;粉刷3幢房子的成本分别为…...

js逆向第11例:猿人学第4题雪碧图、样式干扰

任务4:采集这5页的全部数字,计算加和并提交结果 打开控制台查看请求地址https://match.yuanrenxue.cn/api/match/4,返回的是一段html网页代码 复制出来格式化后,查看具体内容如下: <td><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAA…...

OpenEular23.09(欧拉)操作系统为企业搭建独立的K8S集群环境,详细流程+截图

一.环境&#xff1b; win10&#xff0c;vmware16 pro&#xff0c;openeular23.09&#xff0c;linux内核 6.4.0-10.1.0.20.oe2309.x86_64&#xff0c; docker-engine 2:18.09.0-328&#xff0c;kubernetes 1.25.3&#xff0c;containerd 1.6.22&#xff0c;calico v3.25 集群…...

学生成绩管理系统半成品

C语言的老师在给我们讲指针的时候&#xff0c;讲的并不深入&#xff0c;她用了一个学生成绩管理系统来引入指针这个东西并给我们讲解&#xff0c;但我觉得她的管理系统功能有一些不足&#xff0c;并且不是很美观&#xff0c;所以说心血来潮&#xff0c;自己也动手写了一个学生成…...

国家信息安全水平等级考试NISP二级题目卷⑤(包含答案)

国家信息安全水平等级考试NISP二级题目卷&#xff08;五&#xff09; 国家信息安全水平等级考试NISP二级题目卷&#xff08;五&#xff09;需要报考咨询可以私信博主&#xff01; 前言&#xff1a; 国家信息安全水平考试(NISP)二级&#xff0c;被称为校园版”CISP”,由中国信息…...

4.快速实现增删改查,模糊查询功能

打开springboot项目&#xff0c;在com.example下建包common,在common下新建Result.java 4.1封装统一的返回数据结构 1.在Result.java中编写如下代码&#xff1a; private static final String *SUCCESS*"0"; private static final String *ERROR*"-1"; p…...

【Redux】自己动手实现redux和react-redux

1. React提供context的作用 在class组件的世界里&#xff0c;如果后代组件共享某些状态&#xff0c;比如主题色、语言键&#xff0c;则需要将这些状态提升到根组件&#xff0c;以props的方式从根组件向后代组件一层一层传递&#xff0c;这样则需要在每层写props.someData&#…...

代码随想录算法训练营day6|242.有效的字母异位词、349.两个数组的交集、202.快乐数

哈希表理论基础 建议&#xff1a;大家要了解哈希表的内部实现原理&#xff0c;哈希函数&#xff0c;哈希碰撞&#xff0c;以及常见哈希表的区别&#xff0c;数组&#xff0c;set 和map。 什么时候想到用哈希法&#xff0c;当我们遇到了要快速判断一个元素是否出现集合里的时…...

2024.1.4每日一题

LeetCode每日一题 2397.被列覆盖的最多行数 2397. 被列覆盖的最多行数 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个下标从 0 开始、大小为 m x n 的二进制矩阵 matrix &#xff1b;另给你一个整数 numSelect&#xff0c;表示你必须从 matrix 中选择的 不同 …...

C++协程和线程的区别?详细介绍一下C++协程

C协程和线程的区别 线程是操作系统级别的资源&#xff0c;由操作系统负责调度和切换&#xff0c;每个线程都有自己的堆栈和执行上下文。线程之间的切换需要保存和恢复线程的执行上下文&#xff0c;这个过程有一定的开销。协程是用户态的轻量级线程&#xff0c;协程的调度完全由…...

数字信号处理期末复习——计算大题(一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…...

matlab数值计算函数--ode45

当难以求得微分方程的解析解时&#xff0c;可以求其数值解&#xff0c;Matlab中求微分方程数值解的函数有七个&#xff1a;ode45&#xff0c;ode23&#xff0c;ode113&#xff0c;ode15s&#xff0c;ode23s&#xff0c;ode23t&#xff0c;ode23tb。本文讲解ode45&#xff0c;其…...

Vue3地图选点组件

Vue3地图选点组件 <template><div style"width: 100%; height: 500px"><div class"search-container"><el-autocompletev-model"suggestionKeyWord"class"search-container__input"clearable:fetch-suggestion…...

JS之注册事件兼容性解决方案

本章介绍注册事件兼容性的解决方案 废话不多说&#xff0c;直接上代码&#xff1a; function addEventListener(element, eventName, fn) {//判断当前浏览器是否支持 addEventListener 方法if (element.addEventListener) {element.addEventListener(eventName, fn); // 第三个…...

C#中使用as关键字将对象转换为指定类型

目录 一、定义 二、示例 三、生成 使用as关键字可以将对象转换为指定类型&#xff0c;与is关键字不同&#xff0c;is关键字用于检查对象是否与给定类型兼容&#xff0c;如果兼容则返回true&#xff0c;如果不兼容则返回false。而as关键字会直接进行类型转换&#xff0c;如果…...

【Spring实战】21 Spring Data REST 常用功能详细介绍

文章目录 1. 资源导出&#xff08;Resource Exporting&#xff09;2. 查询方法&#xff08;Query Methods&#xff09;3. 分页和排序&#xff08;Pagination and Sorting&#xff09;4. 关联关系&#xff08;Associations&#xff09;5. 事件&#xff08;Events&#xff09;6. …...

05-微服务-RabbitMQ-概述

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&am…...

jmeter参数化的三种方式

1.用户定义变量 使用变量&#xff1a; ${变量名} 这个变量是全局变量&#xff0c;也就是在下面子节点中都可以使用&#xff1b; 使用场景&#xff1a;两个账号分别有不同的权限&#xff0c;A经办&#xff0c;B审核。等。。。 2.CSV数据文件设置 3.函数...

java基础之Java8新特性-Lambda

目录 什么是Lambda表达式 Lambda表达式规范 基本语法 参数列表 函数体 注意事项 如何定义函数接口 1.保证接口中只能有一个抽象方法 2.使用FunctionalInterface注解标记该接口为函数接口 使用Lambda调用无参函数 使用Lambda调用有参函数 使用Lambda的精简写法 使用…...

入门使用mybatis-plus

第一步&#xff1a;pom文件带入依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version> </dependency> 第二步&#xff1a;创建实体对象 TableName(&…...

ubuntu安装和配置ssh教程

一、前言 ssh服务类似于windows的远程桌面服务,可以实现对linux系统的远程管理,ssh默认端口为22端口。后面博主进行操作以ubuntu2020操作系统为例进行操作。 二、安装ssh服务 Ubuntu 2020 默认不安装 SSH 服务。它只安装了 SSH 客户端,可以用于连接到其他计算机上的 SSH 服…...

每天刷两道题——第六天

1.1字母异位词分组 给你一个字符串数组&#xff0c;将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词指的是由重新排列源单词的所有字母得到的一个新单词。 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,…...

时间序列平稳性相关检验方法

理解平稳性 一般来说&#xff0c;平稳时间序列是指随着时间的推移具有相当稳定的统计特性的时间序列&#xff0c;特别是在均值和方差方面。平稳性可能是一个比较模糊的概念&#xff0c;将序列排除为不平稳可能比说序列是平稳的更容易。通常不平稳序列有几个特征&#xff1a; …...

<leetcode修炼>双指针训练-移动零

题目: 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 方法1: 快慢指针 快指针负责遍历数组中所有元素&#xff0c;慢指针负责记录不为0的…...

Python初探:从零开始的编程奇妙之旅

一、Python是什么 Python是一门多用途的高级编程语言&#xff0c;以其简洁、易读的语法而脱颖而出。在深度学习领域&#xff0c;Python扮演着至关重要的角色。其丰富的科学计算库&#xff08;如NumPy、Pandas、Matplotlib&#xff09;和强大的深度学习框架&#xff08;如Tenso…...

算法与数据结构之链表<一>(Java)

目录 1、链表的定义 2、链表的特点 3、为何要使用链表 4、数组与链表的区别 5、链表的增删查 5.1、在头部插入链表 5.2、在中间插入链表 5.3、删除头节点 5.4、删除中间节点 5.5、查询某个值 6、链表的应用 6.1 如何设计一个LRU缓存算法&#xff1f; 6.2 约瑟夫问题 1、链表的定…...

目标检测COCO数据集与评价体系mAP

1.mAP 2.IoU IoU也就是交并比&#xff0c;也称为 Jaccard 指数&#xff0c;用于计算真实边界框与预测边界框之间的重叠程度。它是真值框与预测边界框的交集和并集之间的比值。Ground Truth边界框是测试集中手工标记的边界框&#xff0c;用于指定对象图像的位置以及预测的边界框…...

2024最全面且有知识深度的web3开发工具、web3学习项目资源平台

在Web3技术迅速发展的时代&#xff0c;寻找一个综合且深入的Web3开发工具和学习项目资源平台变得至关重要。今天&#xff0c;我将向大家介绍一个非常有价值的网站&#xff0c;它就是https://web3x.world 。 Web3X是一个全面而深入的Web3开发者社区&#xff0c;为开发者们提供了…...

Golang - defer关键字 深入剖析

defer关键字 defer和go一样都是Go语言提供的关键字。defer用于资源的释放&#xff0c;会在函数返回之前进行调用。一般采用如下模式&#xff1a; f,err : os.Open(filename) if err ! nil {panic(err) } defer f.Close()如果有多个defer表达式&#xff0c;调用顺序类似于栈&a…...

学习网站开发/网站搭建关键词排名

● centos 7编译高版本内核&#xff1a; linux-3.13.10 过程相对简单&#xff1a; 1. 安装依赖 yum install ncurses-devel 2. 将linux内核解压缩到/usr.src/ 3. make 4. make modules_install 5. make install 6. 重起 转载于:https://www.cnblogs.com/volcanorao/p/6478092.h…...

网站用社交图标做链接侵权吗/百度浏览器官方网站

911. 在线选举 给你两个整数数组 persons 和 times 。在选举中&#xff0c;第 i 张票是在时刻为 times[i] 时投给候选人 persons[i] 的。 对于发生在时刻 t 的每个查询&#xff0c;需要找出在 t 时刻在选举中领先的候选人的编号。 在 t 时刻投出的选票也将被计入我们的查询之…...

专业做网站报价/网络推广服务费

https://www.cnblogs.com/yangfengwu/p/11087613.html 页面修改成这样子 现在看串口发送数据 点击点亮 发送0xaa 0x55 0x01 我电脑上安装了虚拟串口软件,虚拟出来了COM1和COM2,然后COM1发送的数据会发给COM2 COM2发送的数据会发给COM1 大家如果有两个串口模块也可以 http…...

自己做网站挣钱不/360优化大师下载

最近写个http客户端的小程序&#xff0c;由于http是基于tcp的无消息边界保护的协议&#xff0c;所以接受时必须要确定接受数据的数量才能完整接收数据。传统的方式&#xff0c;只要先接收到Content-Length就可以通过这个长度接受消息体部分了。而transfer-encoding:chunked的引…...

企业网站建设品牌/网站公司

简单的jQuery代码段通过禁用与​​按钮关联的onclick事件来停止单击时清除输入。 这只是失败的代码&#xff0c;很抱歉&#xff0c;没有适当的示例。 $(.del).click(function(){onclick $(this).attr(onclick);$(this).attr(onclick,);showConfirm(onclick);return false; });…...

北京建设公司有哪些/网站网络优化外包

Spark&#xff1a; 1.Spark中的shuffle有哪些&#xff1f;1.1.最早的Hash Based Shuffle&#xff08;2.0以上被弃用&#xff09;每个Mapper对每一个Reducer都会创建相应的bucket&#xff0c;bucket数量为Mapper个数Reducer个数。缺点是会产生太多小文件&#xff0c;后面将一个…...