Vi 入门简易教程
首先,请注意,以下所讲的,全部是键盘在英文输入模式下。如果键盘是在中文输 入模式,全部的指令不正确。
vi 有两种模式: Command Mode(指令模式) and Insert Mode(我姑且称为书写模 式).
一.启动 vi 的方法:
$vi abc.txt //abc.txt 可以是事先不存在的文件名字;
abc.txt 也可以是事先存在的 或者就:
$vi //如我们在课堂上做的,写了一些东西之后,
再用指令: “:w abc.txt”存 为”abc.txt”
二. 模式转换 A. 进入指令模式(Command Mode): (无论当前是什么模式)按”Esc”键,进入指令模式(Command Mode)。可以多按几 次”Esc”键。 B. 从指令模式(Command Mode)进入书写模式(Insert Mode):
(1)i: 代表 insert. 如下,小写和大写有不同的插入位置: 按”i”键:从光标所在处前面一个字母开始输入。比如,假设在指令模式时, 你的光标在如下红色的”m”: I have a dream. 按”i”键,你的输入就在”drea”之后,”m”之前。 按”I”键(就是 SHIFT + i),光标移动到这一行的最开头,并且成为书写模式。
(2)a: 代表 append. 如下,小写和大写有不同的插入位置: 按”a”键:从光标所在处后面一个字母开始输入。比如,假设在指令模式时, 你的光标在如下红色的”m”: I have a dream. 按”a”键,你的输入就在”dream”之后,”.”之前。 按”A”键(就是 SHIFT + a),光标移动到这一行的最尾,并且成为书写模式。
(3)o: 代表 open a new line(新开一行)。如下,小写和大写有不同的插入位置: 按”o”键:从你光标所在的当前行,下面新开一行,并且成为书写模式。 按”O”键:从你光标所在的当前行,上面新开一行,并且成为书写模式。
三. 指令模式下的一些常用命令 在指令模式下,有很多的命令可以用。我们先从一些常用的开始学习。 请记住,这里所有的命令都是在指令模式下运行
(1)显示每行的数字 :set number :set nonumber //不显示每行的数字
(2)移动光标(在指令模式下进行,光标移动到新的位置后,仍然是指令模式, 不是书写模式)
a. 移动到某一行,比如: 7G //移动光标到第七行 1G //移动光标到第一行 SHIFT + g //移动光标到最后一行
b. 按”w”键, (w 代表 word),光标会一个词,一个词往前面跳。 (如果是书写模式,你按”w”键,”w”会出现在屏幕上。在指令模式下,”w”是一个 指令。) 按”W”键,光标会一个词,一个词往前面跳。与上面的区别是,有时候上面认 为是两个词,比如 “$30” (按”w”时,这需要两步;按”W”时,这是一步)。 如果要往前面跳三个词,按”3w”或者”3W”。
c. “h”: 光标左移 (与左尖头相同) “l”(小写的 L): 光标左移 (与右尖头相同) “j”: 光标下移 (与向下尖头相同) “k”: 光标上移 (与向上尖头相同) “h”, “l”, “j”, “k” 由于就在指头底下,熟悉之后,比用上下左右尖头方便。有一些网 页游戏(比如 www.vim-adventures.com),让你练习使用“h”, “l”, “j”, “k”来移动光 标。
d. 按”$”键(也就是按 SHIFT + 4),光标移动到ᴀ行最后一个字母。 (请记住,”$”代表ᴀ行的尾。”d$” 删除从当前光标位置到ᴀ行最后。) 按”∧”键(也就是按 SHIFT + 6),光标移动到ᴀ行最开头的字母。 (请记住,”∧”代表ᴀ行的开头。”d∧”(也就是先按’d’键,再按 SHIFT + 6)删除从 当前光标位置到ᴀ行开始。)
(3)删除 “dw” 代表 delete word。当你的光标在一个单词的头上,这个命令删除这个单词。 如果你的光标在这个单词的中间,这个命令删除从你的光标位置到词尾。 “d5w” 删除 5 个单词。 ”d$” 和 ”d∧”上面已经说过。 “dd”删除当前行。”d3d”删除当前行和下面两行。 “:3,5d” 删除第三行到第五行。 “:3,$d” 删除第三行到该文章的尾。请注意,”$”总是代表尾。
(4)复制/黏贴 “:3,5y” 复制第三行到第五行。之后,移动光标到目的地: 按”p”键,该三行就黏贴到ᴀ行的下面。 按”P”键,该三行就黏贴到ᴀ行的上面。 p: 代表 paste 同理,当你用”dd”(删除当前行), “d2d”(删除当前和下面行), “:4,7d”(删除第 四到第七行)后,移动光标到目的地,用”p”或者”P”就把先前切掉的内容黏贴到当 前行的下面,或者上面。 “yy” 代表复制当前行。y 代表 yank “y5y” 复制当前及下面四行。
四.存储和推出 vi 在指令模式下 “:w abc.txt” (存储为 abc.txt. 假设你是用 “vi” 而不是 “vi abc.txt” 开始的)。
“:w” 存储 (假设之前你已经命名了这个文件)
“:q” 退出 vi。假若你对文件有改动,但没有存。
Vi 会不让你退出,提醒你还没有 存你的改动。
“:q!” 坚决退出,不要存。
“:wq” 存储,然后推出 vi w 代表 write q 代表 quit
Vi 入门简易教程的更多相关文章
- 文件上传利器SWFUpload入门简易教程
凡做过网站开发的都应该知道表单file的确鸡肋. Ajax解决了不刷新页面提交表单,但是却没有解决文件上传不刷新页面,当然也有其它技术让不刷新页面而提交文件,该技术主要是利用隐藏的iFrame, 较A ...
- SpringBoot入门简易教程
使用SpringBoot来开发一个简单的restful api网关功能,目标:实现对SpringBoot的简单入门. 1. 创建SpringBoot项目 可以通过spring官网(https://st ...
- 【学习笔记】动态 dp 入门简易教程
序列 dp 引入:最大子段和 给定一个数列 \(a_1, a_2, \cdots, a_n\)(可能为负),求 \(\max\limits_{1\le l\le r\le n}\left\{\sum_ ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):1. 自定义窗口部件 (widget)
1. 框架代码 用 PyCharm 新建一个名为 SimplePaintApp 的项目,然后新建一个名为 simple_paint_app.py 的 Python 源文件, 在代码编辑器中,输入以下框 ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):3. 随机颜色及清除按钮
1. 随机颜色 通过前面的教程,咪博士已经带大家实现了画板的绘图功能.但是,现在画板只能画出黄色的图案,还十分单调,接下来咪博士就教大家,如何使用随机颜色,让画板变得五彩斑斓. 改进后的代码如下: f ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):2. 实现绘图功能
1. 理解 kivy 坐标系统 上一节中,咪博士带大家实现了画板程序的基础框架,以及一个基本的自定义窗口部件(widget).在上一节的末尾,咪博士留了一道关于 kivy 坐标系统的思考题给大家.通过 ...
- Kivy 中文教程 实例入门 简易画板 (Simple Paint App):0. 项目简介 & 成果展示
本教程咪博士将带领大家学习创建自己的窗口部件 (widget).最终,我们完成的作品是一个简易的画板程序. 当用 kivy 创建应用时,我们需要仔细思考以下 3 个问题: 我们创建的应用需要处理什么数 ...
- 10分钟入门git简易教程
在注册了github账号之后,一度不知道该如何使用. 在仔细研究了github的官方说明文档.廖老师的教程.还有许多博主的文章之后,总算对github的操作和体系有了较为深刻的了解,还有这篇简单的入门 ...
- Intellj IDEA 简易教程
Intellj IDEA 简易教程 目录 JDK 安装测试 IDEA 安装测试 调试 单元测试 重构 Git Android 其他 参考资料 Java开发IDE(Integrated Developm ...
随机推荐
- HBase管理与监控——彻底删除HBase数据
1.hadoop的bin目录下,执行命令以下命令清除Hbase数据 hadoop fs -rm -r /hbase 2.连接ZK,执行以下命令清除Hbase数据 rmr /hbase 3.重启ZK.重 ...
- Swift3.0封装 AFN 的 GET&POST网络请求
// // PSNetWorkManage.swift // WeiBoSwift // // Created by 思 彭 on 16/9/25. // Copyright © 2016年 思 彭. ...
- 4. Linux管理命令
df.du:磁盘.空间相关的命令 df -h 以直观的方式显示磁盘分区使用状况 df test 查询test属于哪个分区 du du -h 以直观方式显示文件夹目录的使用状况 du -s 只显示当 ...
- vue新增属性是否会响应式更新?
原文地址 在开发过程中,我们时常会遇到这样一种情况:当vue的data里边声明或者已经赋值过的对象或者数组(数组里边的值是对象)时,向对象中添加新的属性,如果更新此属性的值,是不会更新视图的. 根据官 ...
- 自动化运维:(1)认识 Shell
目录 (一)运维是什么? (二)什么是 Shell? (三)Shell的分类 (四)Shell脚本 (五)Shell的变量 (六)表达式 (七)Linux常见符号 (八)常见命令 (一)自动化运维是什 ...
- HashMap、Hashtable 以及HashSet
关于多线程的问题大多会涉及到Collection框架,涉及到Collection框架就不得不谈HashSet和HashMap.HashMap和HashSet都是collection框架的一部分,它们让 ...
- linux中查找命令find、locate、whereis、which、type的区别
find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/var/lib/locatedb)文件不同,find查找的是磁盘空间. locate locate命令其实 ...
- 【神经网络与深度学习】转-caffe安装吐血总结
这周安装了caffe的windows版本和Linux版本,依赖关系太多,如果系统选对了,安装起来很easy,选错了,就会遇见各种坑. 1.操作系统最好使用ubuntu desktop 14.04 64 ...
- SQL 查看某个表被哪些存储过程或者视图使用
--查询某个表被哪些视图/存储过程使用(type='P':表示存储过程,type='V':表示视图) SELECT OBJECT_NAME(id) FROM syscomments WHERE id ...
- SQLite进阶-10.约束
约束 约束是作用于数据表中列上的规则,用于限制表中数据的类型.约束的存在保证了数据库中数据的精确性和可靠性. 约束可以是列级或表级,列级约束作用于单一的列,而表级约束作用于整张数据表. SQLite中 ...