vi文字处理器

http://blog.csdn.net/wangloveall/article/details/22649331

 

摘要:vi是类UNIX命令行接口的标准文字处理软件,也是进行shell脚本程序编写与服务器设置的非常重要的工具。本文介绍vi文字处理器,包括vi简介、vi怎么使用、vi的加强版vim。

关键词:vi    文字处理器    vim

vi是一种计算机文本编辑器,由美国计算机科学家比尔.乔伊(Bill Joy)完成编写于1976年发表,并以BSD授权发布。

Linux世界里,为什么要学习和掌握好vi呢?原因如下。

第一:所有的类Unix系统(Linux)都会内建vi文字处理器,其他文字处理器不一定存在。也就是说,vi具有极大的通用性。

第二:Linux绝大部分配置文件都是ASCII纯文本文件,因此利用vi就可以进行方便地修改和设定。也就是说,vi具有很广的应用域。

第三:很多个别软件的编辑接口会主动呼叫vi(例如crontab,visudo,edquota等指令)。也就说,vi具有很多支持者。

第四:vi简单易学,功能强大,内容丰富,编辑程序的速度快。也就说,vi具有“简单主义”的设计哲学。

第五:vim是vi的进阶版,学好vi,可以更好地使用vim。也就是说,vi具有“根基”的内涵。

我想,为什么要学好vi?简而言之,为了更好地使用Linux系统,包括Linux系统的管理和Linux系统的编程等。

vi是什么清楚了,为什么要使用vi也有理由了,那怎么使用vi呢?

vi包含三种工作模式,分别是【一般模式】、【编辑模式】和【命令模式】,关于三种模式各自的作用说明如下。

1 一般模式:它是vi的默认模式,使用vi打开文件就进入一般模式。该模式下,可以使用上下左右方向键移动光标,可以使用删除字符或删除整行或复制或粘贴来处理文件内容。

2 编辑模式:一般模式无法编辑文件内容。按下【i,I,o,O,a,A,r,R】等任何一个字母之后才会进入编辑模式。通常在Linux下,按下这些键后,在画面的左下方会出现【INSERT或者REPLACE】的字样,此时才可以进行编辑。如果要回到一般模式,按下【Esc】这个按键即可退出编辑模式。

3 命令模式:在一般模式中,当输入【:  /  ?】三个中的任何一个按钮,即可将光标移到画面最底下一行,即进入到命令模式。该模式下,可完成读取、存盘、大量取代字符、离开vi、显示行号等等动作。

vi三种工作模式关联图见图1所示。

 

图1 vi三种工作模式关联图

温馨提示:由图可知,一般模式可以与编辑模式或者命令模式切换,但是编辑模式与命令模式之间不能切换,必须依赖于一般模式。

关于vi文字处理器在不同工作模式下的具体使用,请参阅Resource中鸟哥的Linux私房菜的第十章《vim程序编辑器》内容。关于怎样使用vi,除了掌握不同模式下的具体使用方法外,需要多使用vi来处理与Linux系统相关的事情。时间长了,用得多了,也就成为一种优秀的习惯了。

我们在Linux系统下写源代码,需要一个程序编辑器,vim是一个很好的选择。我们已经知道,它不仅是vi的进阶与提升,更是一款很好的程序编辑器。使用它写代码,可以主动地以字体颜色辨别语法的正确性,极力地方便程序的设计。举例来说,当你使用vim编辑一个Java源程序,vim会依据源程序的扩展名或者源程序内的开始信息,判断该源程序的内容并且自动地启用该程序的语法判别式,再以颜色显示源程序内容和一般信息。

使用vim编写的HelloWord.java如图2所示。

 

图2 vim 写的HelloWorld.java效果图

关于vim程序编辑器相对vi文字处理器所增加的额外功能,请参阅Resource中鸟哥的Linux私房菜的第十章《vim程序编辑器》内容。

Resource:

1 http://www.wangluqing.com/2014/03/vi-word-operate/

2 http://zh.wikipedia.org/wiki/Vi

3 鸟哥的Linux私房菜的第十章《vim程序编辑器》

转载于:https://www.cnblogs.com/ExMan/p/3716773.html

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

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

相关文章

用numpy,matplotlib库画笛卡尔爱心曲线

1650年,斯德哥尔摩的街头,52岁的笛卡尔邂逅了18岁的瑞典公主克里斯汀。   那时,落魄、一文不名的笛卡尔过着乞讨的生活,全部的财产只有身上穿的破破烂烂的衣服和随身所带的几本数学书籍。生性清高的笛卡尔从来不开口请求路人施舍…

centos7虚拟机共享本机磁盘的方法

说明:这个方法不一定是通用的,也可能不是最快捷的,但是感觉比较稳妥的办法。 1,首先坚持两个进程是否启动:右击:我的电脑-管理-服务,检查server服务和Workstation服务是否启动。如果没有启动&a…

服务器小程序servlet的使用

servlet的创建使用一,三种创建方式1.1 实现servlet接口1.2 继承GenericServlet1.3 继承HttpServlet二,servlet使用2.1 web.xml文件的配置2.1.1 创建xml文件2.1.2 手写web.xml文件2.2 在8080端口下访问2.2.1 servlet的生命周期servlet是服务器小程序。是个…

el表达式,c标签的使用

el表达式的使用 学生类 public class Student {int id;String name;String sex;String birth;public Student() {}public Student(int id, String name, String sex, String birth) {super();this.id id;this.name name;this.sex sex;this.birth birth;}// el 表达式取实…

conda虚拟环境中安装ipython

问题:今天安装了tensorflow,启动ipython竟然提示如下: In [1]: import tensorflow as tf --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recen…

使用session保持登录状态,cookie保存用户账号密码

session保存登录状态与cookie保存账号密码1. session维持登录状态1.1 代码实现2. cookie保存账号密码2.1 什么是cookie2.2 cookie记住账号密码1. session维持登录状态 利用session的生命周期实现 1.1 代码实现 login页面表单部分 <form action"judgeLoginSession&qu…

js表单验证,给出友好的提示

js验证表单 注意&#xff1a; 只做非空验证, 只是个小demo学习思想&#xff0c;onblur onfocus onsubmit的使用&#xff0c;给出友好提示网上有很多有良好&#xff0c;强大的控件&#xff0c;用于用户输入 代码实现 js代码 <script>function check_form(form) {// 得到f…

注册demo,使用jQuery异步验证账号是否存在

功能 jQuery验证账号是否存在form表单提交判断&#xff0c;失焦判断 界面 Ajax代码&#xff0c;验证用户rye1是否存在 function check_UserId() {$userId $("#userId").val();$.post("checkUserId","userId" $userId,function (result) { // 异…

虚拟机的网络连接模式

本文参考文章如下&#xff0c;感谢原作者&#xff1a; 《虚拟机的桥接模式和NAT模式》 https://blog.csdn.net/qq_40198004/article/details/89785806 1、桥接模式 桥接模式:直接连接物理网络&#xff0c;也就是连的你交换机的网络和你主机的IP在一个网段上&#xff0c;将虚拟…

自考感悟,话谈备忘录模式

引言&#xff1a; 2014年4月20号上午11:30&#xff0c;正式结束了自己的自学考试&#xff01;考完之后瞬间感觉放松了开来&#xff01;全身无力则是自己20号下午的唯一感受。放松了半天&#xff0c;今天回归正轨&#xff01;又回到了和生活息息相关的设计模式上来&#xff01;今…

小白教你用Java生成验证码

验证码生成效果一&#xff0c;生成验证码二&#xff0c;页面收到验证码三&#xff0c;验证验证码是否填写正确效果 点击验证码可切换 给出提示 一&#xff0c;生成验证码 package servlet;import java.io.IOException;import javax.servlet.ServletException; import jav…

modbus rtu 协议转DLT645-2007和DLT645-1997电表协议转换器定制,

现场会碰到现场数据为Modbus协议&#xff0c;但是后台系统为DLT645协议系统&#xff0c;本模块支持将工业ModbusRtu协议转换为电表国标协议DLT645协议&#xff0c;支持1997和2007俩种标准&#xff0c;只需要进行简单的配置&#xff0c;就可以实现Modbus 协议转DLT645协议&#…

残差网络(ResNet)

普通块 残差块 现在一个大概的理解是&#xff0c;增加x这条“短路”后&#xff0c;肯定优于&#xff08;恒等映射&#xff09;&#xff0c;可以考虑两种情况&#xff1a;可以拟合出远远高于&#xff08;恒等映射&#xff09;&#xff0c;或者根本拟合不出高于&#xff08;恒等…

AI绘画训练一个扩散模型-上集

介绍 AI绘画&#xff0c;其中最常见方案基于扩散模型&#xff0c;Stable Diffusion 在此基础上&#xff0c;增加了 VAE 模块和 CLIP 模块&#xff0c;本文搞了一个测试Demo&#xff0c;分为上下两集&#xff0c;第一集是denoising_diffusion_pytorch &#xff0c;第二集是diff…

WPF多线程UI更新——两种方法

WPF多线程UI更新——两种方法 前言 在WPF中&#xff0c;在使用多线程在后台进行计算限制的异步操作的时候&#xff0c;如果在后台线程中对UI进行了修改&#xff0c;则会出现一个错误&#xff1a;&#xff08;调用线程无法访问此对象&#xff0c;因为另一个线程拥有该对象。&…

二叉树的递归遍历

二叉树遍历一&#xff0c;什么是二叉树二&#xff0c;递归实现2.1 结点类描述2.2 三种递归2.2 测试一&#xff0c;什么是二叉树 在计算机科学中&#xff0c;二叉树是每个结点最多有两个子树的树结构。通常子树被称作"左子树"&#xff08;left subtree&#xff09;和&…