史上最简单的vi教程,10分钟包教会
从第一次接触vi/vim到现在已经十几年了,在这个过程中,来来回回,反反复复,学习vi很多次了。
虽然关于vi的使用,我还远未达到“专家”的水平,但对于vi的使用,我有话说。
1.缘起
vi是一个编辑器,起源于unix,在linux中非常常用。关于vi的使用,网上有大量的教程,但质量良莠不齐,很容易误导“新手”。本文的价值在于,我走了十几年的弯路,你可以少走弯路。
每个人学习vi的目的不一样,学习过程和学习方法也比如不同。一般学习者分如下3种情况:
新手级
新手要求不高,会用基本操作即可。本文通过10分钟的学习,就可以达到这个目标。
进阶级
大部分人目前处于这个阶段,在本文的最后,将介绍如何从进阶级步入专家级。
专家级
到这个阶段,基本上可以做到“信手拈来”,出神入化了。
2.新手学习vi
对于新手入门vi,只要掌握打开文件,编辑,保存。
打开文件
在命令行中 vi filename,就可以打开文件进行查看和编辑。
编辑
打开文件后进行编辑的操作,主要包括“增、删、改、查”。
和其他编辑器不同,vi 有
Normal模式
,Insert模式
。在Normal模式下输入
i
进入Insert模式,输入Esc
返回Normal模式。(当然有非常多的方法进入编辑模式,如输入a
,o
等,此处不过多说明)。1)增
确保是在Insert模式下,通过键盘输入内容即可。
[注意] 如何识别当前是在什么模式下?状态栏可以看的,或者键盘输入看。
2)删
删除,跟其他编辑器的操作不同(其他编辑器是先选定,然后Delete、或者Backspace)。
在vi中的删除是在Normal模式下,通过
x
删除一个字符,通过dd
删除光标所在行。3)改
所谓“改”,无外乎先删除,再输入。我们通过1)和2)组合实现。
好吧,这里还是学一点吧: 在Normal模式下输入
cw
,可以替换一个“单词”。4)查
vi打开的文件,如果内容非常多,需要查询,替换的时候,需要用到“查”。
在Normal模式下,输入
/
,后跟需要查询的内容,然后回车即可。保存
保存是在命令模式下输入 :w 即可,退出时命令模式下输入 :q 。
3.进阶学习vi
新手通过步骤2,初步掌握了vi的使用。进阶学习,需要掌握(切记下面所有的都是在Normal模式):
初级光标的移动
你可能会有疑问,新手不需要移动光标?当然需要了,只不过默认通过“上、下、左、右”箭头移动即可。其实vi中,为了更加高效,是通过
h j k l
来移动光标的。高级光标的移动
比如数字0移动到行的开头,$移动到当前行的行尾,^移动到本行第一个非空字符,
各种进入
Insert
模式的方法比如在光标后插入
a
,在当前行下面新增一行的o
,在当前行上面新增一行的shift + o
,或者输入cw
替换一个word
。查找和替换
复制、粘贴
复制通过
yy
,粘贴是p
。灵活掌握,比如我们知道
dd
是删除当前行,光标定位到目标位置后,接着按键p
是可以粘贴的。比如
3dd
是重复执行dd
三次,不一而足。光标的定位
:N
,比如:100
,表示光标定位到第100行。在此,需要思考,总共只有10行,会怎么样?gg
相当于是:1
G
定位到最后一行区域选择、块操作、可视化选择
......
4.总结
对于新手来说10分钟入门vi不吃亏,对于已经入门需要进阶,请自行学习:
Learn Vim Progressively 个人认为这个是有史以来最好的vi教程,没有之一。
对于新手,也可以通过vimtutor来学习
我的方法就是,“用”起来就会了。虽然我用的是windows 10系统,我开发中,vs code和IntelliJ IDEA、visual studio都启用了vi的。
有图有真相:
加油,我相信你也可以入门,并成为vi专家的!
史上最简单的vi教程,10分钟包教会的更多相关文章
- 史上最简单的 GitHub 教程
史上最简单的 GitHub 教程 温馨提示:本系列博文已经同步到 GitHub,如有需要的话,欢迎大家到「github-tutorial」进行Star和Fork操作! 1 简介 GitHub 是一个面 ...
- 整理:史上最简单的 MySQL 教程
1 前言 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成 ...
- 史上最简约的vi教程,复制和粘贴
上一篇博客,讲了"新手"如何"入门"vi,解决了"两眼一抹黑"的情况.知道在vi下如何进行基本的操作,如部署在Linux下的项目,修改配置文 ...
- [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例)
[分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例) 踏雁寻花 发表于 2015-8-23 23:31:28 https://www.itsk.com/thread-35 ...
- 史上最简单的 SpringCloud 教程
史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)史上最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)史上最简单的Spri ...
- 史上最简单的 SpringCloud 教程 | 终章
https://blog.csdn.net/forezp/article/details/70148833转载请标明出处:http://blog.csdn.net/forezp/article/det ...
- (转) 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
一.spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运 ...
- 史上最简单的SpringCloud教程 | 第十篇: 高可用的服务注册中心(Finchley版本)
转载请标明出处: 原文首发于 https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f10-eureka/ 本文出自方志朋的博客 文章 史上最简单 ...
- 史上最简单的 MySQL 教程(十五)「列属性 之 自动增长」
自动增长 自动增长:auto_increment,当对应的字段,不给值,或者是默认值,或者是null的时候,就会自动的被系统触发,系统会从当前字段中取已有的最大值再进行+1操作,得到新的字段值. 自增 ...
随机推荐
- linux scull 函数open 方法
open 方法提供给驱动来做任何的初始化来准备后续的操作. 在大部分驱动中, open 应当 进行下面的工作: 检查设备特定的错误(例如设备没准备好, 或者类似的硬件错误 如果它第一次打开, 初始化设 ...
- Spring Data JPA坑点记录
本篇进行Spring-data-jpa的介绍,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求.这里不讲解JPA和Spring-data-jpa单独使用,所有的内容都是在和Spring ...
- MySQL查询语句积累
#查询名字中带李且名字是两个字的所有学生信息 SELECT * FROM user_test WHERE user_name LIKE '李_';
- 2018百度之星资格赛A B F
A.调查问卷 度度熊为了完成毕业论文,需要收集一些数据来支撑他的论据,于是设计了一份包含 mm 个问题的调查问卷,每个问题只有 'A' 和 'B' 两种选项. 将问卷散发出去之后,度度熊收到了 nn ...
- codeforces 1167B Lost Numbers
传送门:https://codeforces.com/contest/1167/problem/B 题意: 交互题:现在你有6个数4, 8, 15, 16, 23, 42组成的某种组合,你可以询问系统 ...
- git push报错大文件,删除后重新commit依然报错
git push报错: github不能上传大文件,按道理删掉重新提交就行了 可是删掉后,git add -A,再git commit,再git push,依然报错 后来我想明白了 github上传时 ...
- slim中返回结果加密的
//返回结果不加密 $this->get("/open]",function (Request $request, Response $response, $args) { ...
- lombok工作原理分析
在Lombok使用的过程中,只需要添加相应的注解,无需再为此写任何代码.但是自动生成的代码到底是如何产生的呢? 核心之处就是对于注解的解析上.JDK5引入了注解的同时,也提供了两种解析方式. 运行时解 ...
- 005 Ceph配置文件及用户管理
一.Ceph的配置文件 Ceph 配置文件可用于配置存储集群内的所有守护进程.或者某一类型的所有守护进程.要配置一系列守护进程,这些配置必须位于能收到配置的段落之下.默认情况下,无论是ceph的服务端 ...
- 【题解】P1373 小a和uim之大逃离
[题解]P1373 小a和uim之大逃离 考虑到可能会MLE,考虑状态压缩一下 由于只要得到他们的差就行了,所以直接少记录一维就好了 \(dp(i,j,r,1/0)\)表示在\(i,j\)点,当前ui ...