技术标签: Linux
vi 编辑器有 3 种基本工作模式,分别是命令模式、文本输入模式和末行模式。下面详 细介绍这 3 种模式。
1) 命令行模式
该模式是进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc
键即可进入命令模式。
在命令模式下,用户可以输入 vi 命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释。若输入的字符是合法的 vi 命令,则 vi 在接受用户命令之后完成相应的动作。
但需注意的是,所输入的命令并不回显在屏幕上。若输入的字符不是 vi 的合法命令,vi 会响铃报警。
2) 文本输入模式
在命令模式下输入插入命令i
、附加命令a
、打开命令o
、修改命令c
、取代命令r
或替换命令s
都可以进入文本输入模式。
在该模式下,用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按下Esc
键即可。
3) 末行模式
末行模式也称 ex 转义模式。
在命令模式下,用户按:
键即可进入末行模式下,此时 vi 会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个:
作为末行模式的说明符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。
末行命令执行完后,vi 自动回到命令模式。
如果要从命令模式转换到编辑模式,可以输入命令a
或者i
。
如果需要从文本模式返回,则按下Esc
键即可。
在命令模式下输入:
即可切换到末行模式,然后输入命令。
vi 编辑器的 3 种模式的转换如下图所示。
图:vi 三种工作模式的切换
本章内容创建一个新的Scrapy项目编写爬虫来抓取网站并提取数据使用命令行导出已删除的数据改变爬虫以递归方式跟随链接爬虫参数创建项目在命令行中输入scrapy startproject tutorial这样就创建好了一个名为tutorial的项目,下面我们看下这个项目的目录结构tutorial/ scrapy.cfg # 部署配置文件 ...
======================================================注:重要!程序员如何有效的放松身心!下班后做什么?======================================================发表评论1411756回复 引用 查看#1楼 2008-12-13 18:45 | 誤人子弟$.g
数值方法·列主元素消去法(python实现)此程序是为了解决列主元素消去法而编写的。数学算法出自于《数值方法》第2章 线性代数方程组的直接解法。参考书:《数值方法》出版社:清华大学出版社import numpy as npfrom numpy.linalg import solveimport randomdef 随机生成行列式(num, A, b): for i in...
发邮件:gomail to := "[email protected]" send := "[email protected]" password := "MinkTech2501" m := gomail.NewMessage() m.SetAddressHeader("From...
图像细节增强(直方图均衡化,对数变换,Gamma变换(校正))文章目录一、直方图均衡化1.定义2.原理3.方法步骤二、对数变换1.原理三、Gamma校正1.原理总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程
C:\>sqlplus "/as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 2月 7 10:35:47 2012Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release ...
集合已经存在的数据{ "_id": "Wzh76lk5_O_dt0vO", "title": "The Catcher in the Rye", "author": "J. D. Salinger", "characters": [ "Holden Caulfield", "Stradlater", "Mr. Antolini" ], "publishInfo": { ...
¡¡¡¡µ±È»Ê×ÏÈÊÇÄãÐèÒª°²×°JAVA·þÎñ¶Ë,Õâ¸ö²»¶à˵,ÍøÉϵ½´¦¶¼ÊÇ,Ö±½Ó½øÈëÖ÷Ìâ°É.Ê×ÏÈÐèÒª×öµÄÊǽ¨Á¢Ò»¸öscoketÈçÏÂ://½¨Á¢XMLSocket¶ÔÏóvar mySocket = new XMLSocket();mySocket.connect("192.168.0.1",2345);//²âÊÔ...
C++学习笔记:命名空间1. 何为命名空间1.1 什么是命名空间1.2 C语言是如何解决名称冲突的1.3 命名空间如何解决问题1.4 关于语言特性的思考2.namespace的初级定义和使用2.1 同一文件内定义namespace2.2 同一文件内使用namespace2.3 不同C文件间定义和使用namespace3.C++默认命名空间4.C++匿名命名空间5.嵌套命名空间1. 何为命名空间...
题目描述请判断一个链表是否为回文链表。代码实现package com.leetcode.链表;import java.util.ArrayList;import java.util.List;import java.util.Queue;import java.util.Stack;/** * Author:markusZhang * VM Args: * Date:...
文章转自:https://zhuanlan.zhihu.com/p/26292456如有侵权,请联系删除/*操作系统:Ubuntu16.04硬件平台:原子Stm32F767+7‘RGB屏幕其他操作系统与开发板搭建环境基本差不多,注意的地方我会提到的。工程Github*/一、软件安装lVSCode为什么用VSCode,相信大家都知道,没用过的同学下载下来用用...
文章目录为什么存在动态内存分配动态内存函数的介绍malloc和free常见的动态内存错误几个经典的例题柔性数组二级目录三级目录为什么存在动态内存分配我们常见的开辟方式有:int val = 20; //在栈空间上开辟四个字节char arr[10] = {0}; //在栈空间上开辟10个字节的连续空间但是上述的开辟空间的方式有两个特点:空间开辟大小是固定的。数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空