一.Vi 简介  

  vi是unix世界中最通用的全屏编辑器,linux中是用的是vi的加强版vim,vim同vi完全兼容,vi就是"visual interface"的缩写。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其它编辑程序所没有的。

  vi不是一个排版程序,它不象Word或WPS那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。

  vi没有菜单,只有命令,且命令繁多。只要在命令行上键入vi就可进入vi的编辑环境。vi有三种状态:命令模式,,文本输入模式和末行模式。键入vi回车后首先进入vi的命令模式。

vi的命令模式

  在命令模式下用户输入的任何字符都被Vi当作命令加以解释执行,如果用户要将输入的字符当作是文本内容时,则首先应将Vi的工作模式从命令模式切换到文本输入模式。在命令模式下,按一下"a"("A")键或者”i” ("I")或者"o"("O")键,即进入插入态文本输入模式。按"a"键,插入到当前光标的后面;按"i"键,在当前光标处插入;按"A"键,在当前光标所在行的最后插入;按"I"键,在当前光标所在行的开头插入。在文本输入模式下,按Esc键,即回到命令模式。

vi的末行模式

  末行模式也称ex转义模式。Vi有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时Vi会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,Vi自动回到命令模式。

  例如:

  :1,$s /A/a/g

  则从文件第一行至文件尾将大写A全部替换成小写a。

  若在末行模式下输入命令过程中想转换的到命令模式,可按键,或用退格键将输入的命令全部删除之后,再按一下退格键,即可使Vi回到命令模式下。

  如果要从命令模式转换到编辑模式,可以键入命令a或者i;如果需要从文本模式返回,则按Esc键即可。在命令模式下输入“:”即可切换到末行模式,然后输入命令。

  Vi中的许多命令都要用到行号及行数等数值。若编辑的文件较大时,自己去数是非常不方便的。为此Vi提供了给文本加行号的功能。这些行号显示在屏幕的左边,而相应行的内容则显示在行号之后。 需要说明的是,这里加的行号只是显示给用户看的,它们并不是文件内容的一部分。

  当用Vi建立一个新文件时,在进入Vi的命令中也可以不给出文件名,当编辑完文件需要保存数据时,再由用户指定文件名。

  进入Vi时,用户不仅可以指定一个待编辑的文件名,而且还有许多附加操作。如果希望在进入Vi之后,光标处于文件中特定的某行上,可在Vi后加上任选项+n,其中n为指定的行数。例如 键入命令:vi +3 example.txt后,光标将位于文件example.txt中的第3行上。

二.vi常用的命令

  1.插入(Insert)命令

  Vi提供了两个插入命令:i 和 I命令

  (1)i命令

  插入文本从光标所在位置前开始,并且插入过程中可以使用键删除错误的输入。此时Vi处于插入状态,屏幕最下行显示“--INSERT--”(插入)字样。

  例1,有一正在编辑的文件,如下所示:

  Welcome to vi world!Come on!

  ~ 
  ~ 
  光标位于第一个“!”上,需在其前面插入:

  This is an example!

  使用i命令,并输入相应文本后,屏幕显示如下:

  Welcome to vi world This is an example!!Come on!

  ~

  ~ 
  由此例可以看到,光标本来是在第一个“!”处,但是由于是从光标所在位置前开始插入,所以这个“!”就被挤到了新插入的文本之后。

  (2)I命令

  该命令是将光标移到当前行的行首,然后在其前插入文本.

  2.光标移动操作在屏幕上移动

  全屏幕文本编辑器中,光标的移动操作无疑是最经常使用的操作了。用户只有熟练地使用移动光标的这些命令,才能迅速准确地到达所期望的位置处进行编辑。

  Vi中的光标移动既可以在命令模式下,也可以在文本输入模式下,但操作的方法不尽相同。

  (1)在文本输入模式下,可直接使用键盘上的四个方向键移动光标。

  (2)在命令模式下,有很多移动光标的方法。不但可以使用四个方向键来移动光标,还可以用h、j、k、l这四个键代替四个方向键来移动光标,这样可以避免由于不同机器上的不同键盘定义所带来的矛盾,而且使用熟练后可以手不离开字母键盘位置就能完成所有操作,从而提高工作效率。

  3.在屏幕上移动

  Vi提供了三个关于光标在全屏幕上移动并且文件本身不发生滚动的命令。它们分别是H、M和L命令。

  (1)H命令

  该命令将光标移至屏幕首行的行首(即左上角),也就是当前屏幕的第一行,而不是整个文件的第一行。利用此命令可以快速将光标移至屏幕顶部。若在H命令之前加上数字n,则将光标移至第n行的行首。值得一提的是,使用命令dH将会删除从光标当前所在行至所显示屏幕首行的全部内容。

  (2)M命令

  该命令将光标移至屏幕显示文件的中间行的行首。即如果当前屏幕已经充满,则移动到整个屏幕的中间行;如果并未充满,则移动到文本的那些行的中间行。利用此命令可以快速地将光标从屏幕的任意位置移至屏幕显示文件的中间行的行首。例如,在上面屏幕显示的情况下(不论光标在屏幕的何处),在命令模式下,输入命令M之后,光标都将移到add这一行的字母a上。同样值得一提的是,使用命令dM将会删除从光标当前所在行至屏幕显示文件的中间行的全部内容。

  (3)L命令

  当文件显示内容超过一屏时,该命令将光标移至屏幕上的最底行的行首;当文件显示内容不足一屏时,该命令将光标移至文件的最后一行的行首。可见,利用此命令可以快速准确地将光标移至屏幕底部或文件的最后一行。若在L命令之前加上数字n,则将光标移至从屏幕底部算起第n行的行首。同样值得一提的是,使用命令dL将会删除从光标当前行至屏幕底行的全部内容。

  4.编辑命令

  让我们看看最简单也是最常用的编辑过程:没有人不犯错误。所以迟早你会碰到修改你输入的文本的时候。实际上花在字处理上的大多数时间是修改而不是输入新的东西。因此,你要知道如何方便地修改就很重要。

  (1)x--删除一个字符

  删除文字的最简单的方式是用x。这个命令的结果是光标所处的字符的消失,后面的文字左移动。如果你删除的字符是一行最后的一个字符,那么光标将向左移动一个,这样光标就不会停留在不存在的字符的下面了。假如没有任何文字了,喇叭就叫。

  (2)d--删除对象

  这个命令的右边还要有一定的文字对象。文字对象就是一块文字。他右边接的就是在控制光标移动的那些字符。例如 w 表示向前一个单词,那么 dw 将删除下一个单词。5w 表示前进5个单词,那么 d5w 将删除他们。

  (3)dd--删除一行

  最常用的 d 系列命令之一。和前面一样, 5dd 将删除 5 行

  (4)D--整个删除

  大写形式的 D 用来删除从光标到行尾。和 d$ 一样效果。

  (5)u--恢复

  要后悔吗?他不仅仅撤消删除,还撤消你所有的编辑工作。

  (6).--重复

  重复编辑工作。

  5.退出Vi

  当编辑完文件,准备退出Vi返回到shell时,可以使用以下几种方法之一。

  (1)在命令模式中,连按两次大写字母Z,若当前编辑的文件曾被修改过,则Vi保存该文件后退出,返回到shell;若当前编辑的文件没被修改过,则Vi直接退出, 返回到shell。

  (2)在末行模式下,输入命令 :w Vi保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。

  例如:w newfile

  此时Vi将把当前文件的内容保存到指定的newfile中,而原有文件保持不变。若newfile是一个已存在的文件,则Vi在显示窗口的状态行给出提示信息:

  File exists (use ! to override)

  此时,若用户真的希望用文件的当前内容替换newfile中原有内容,可使用命令

  :w! newfile

  否则可选择另外的文件名来保存当前文件。

  (3)在末行模式下,输入命令 :q 系统退出Vi返回到shell。若在用此命令退出Vi时,编辑文件没有被保存,则Vi在显示窗口的最末行显示如下信息:

  No write since last change (use ! to overrides)

  提示用户该文件被修改后没有保存,然后Vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出Vi时,可使用命令:q! Vi放弃所作修改而直接退到shell下。

  (4)在末行模式下,输入命令 :wq Vi将先保存文件,然后退出Vi返回到shell。

  (5)在末行模式下,输入命令 :x 该命令的功能同命令模式下的ZZ命令功能相同。

  本文链接:http://www.cnblogs.com/oooweb/p/linux-vi-command.html

Linux 操作系统下 VI 编辑器常用命令详细介绍的更多相关文章

  1. linux下vi编辑器常用命令

    最近折腾云主机centOS,不得不接触到各种命令,特别是vi编辑器. 时常悔恨当时没好好听金老伯的linux课,导致现在操作命令用的十分生疏,甚至跳转行首行尾都要查一查才知道. 所以〒▽〒有了下面这篇 ...

  2. Linux操作系统安全-OpenSSL工具常用命令介绍

    Linux操作系统安全-OpenSSL工具常用命令介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.OpenSSL开源项目有三个组件 openssl: 多用途的命令行工具,包 ...

  3. VI编辑器常用命令

    Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配.注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Windows 下的 word 有排版功能. ...

  4. linux操作系统3 vi编辑器

    知识内容: 1.Linux基础命令复习 2.vi模式和基本操作 3.vi常用快捷键 一.Linux基础命令复习 目录(文件夹)操作 cd 进入目录 (tab自动补全) pwd 查看当前目录 mkdir ...

  5. Linux vi 编辑器 常用命令行

    1.vi 模式   a) 一般模式: vi 处理文件时,一进入该文件,就是一般模式了.   b) 编辑模式:在一般模式下可以进行删除,复制,粘贴等操作,却无法进行编辑操作.等按下'i,I,o,O,a, ...

  6. vi 编辑器常用命令(转)

    常用vi编辑器命令行 对于VI的命令行,不需要特意的去记忆,写下来,让要用到的时候能找到就行 游标控制 h 游标向左移 j 游标向下移 k 游标向上移 l (or spacebar) 游标向右移 w ...

  7. Linux系统下vi编辑器的一些简单使用操作

    Linux系统安装vi编辑器 打开终端,输入: sudo apt install vim 然后输入Y等待安装即可 Linux系统下使用vi编辑器的使用 安装好vim后,终端中输入vim即可进入vim编 ...

  8. vi 编辑器常用命令

    VI编辑器可以分为3种状态,它们分别是命令模式.输入模式以及末行模式,VI运行后默认进入命令模式. 命令模式:控制屏幕光标的移动,字符.单词或行的删除.替换,复制粘贴数据以及由此进入插入模式和末行模式 ...

  9. git在windows及linux环境下安装及常用命令

    git在windows下安装 下载地址:https://git-scm.com/ 默认安装即可 验证 git --version git在linux下安装 下载地址:https://mirrors.e ...

随机推荐

  1. lintcode-107-单词切分

    107-单词切分 给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词. 样例 给出 s = "lintcode" dict = [" ...

  2. erlang调优方法

    1. 来自Scaling Erlang的方法 内核调优: # Increase the ipv4 port range: sysctl -w net.ipv4.ip_local_port_range= ...

  3. Objective - C 之协议

    一.创建方法: 二.实现过程: 1.遵循协议: @protocol NurseWorkingProtocol <NSObject>   //<> 表示遵守协议,创建时就有(Nu ...

  4. java和mysql的length()区别及char_length()

    一. mysql里面的有length和char_length两个长度函数,区别在于: length: 一个汉字是算三个字符,一个数字或字母算一个字符. char_length: 不管汉字还是数字或者是 ...

  5. appium1.6.3/1.6.4/1.6.5版本下如何支持安卓下ByName定位

    1. 换其他定位方式,比如用xpath代替 2. 使用ByAccessibilityId代替,感觉没什么效果 一招修改源码解决问题根源,修改方法如下: 找到你的appium\node_modules\ ...

  6. 【数据库】MySQL 复制表结构

    介绍 有时候我们需要原封不动的复制一张表的表结构来生成一张新表,MYSQL提供了两种便捷的方法. 例: CREATE TABLE tb_base( id INT NOT NULL PRIMARY KE ...

  7. HDU2993_MAX Average Problem

    题目要求你在n个数的序列中,找出一段连续的长度不小于k的连续的序列,使得这个序列的平均数最大.输出这个平均数. 典型的优先队列.首先我们需要根据输入的序列,制造一个和序列. 然后从k开始往后面走,其实 ...

  8. BZOJ 2141 排队(树状数组套主席树)

    解法很多的题,可以块套树状数组,可以线段树套平衡树.我用的是树状数组套主席树. 题意:给出一段数列,m次操作,每次操作是交换两个位置的数,求每次操作后的逆序对数.(n,m<=2e4). 对于没有 ...

  9. 程序猿必备技能:数据库管理——关于MySQL

    一.初识MySQL 1.什么是数据库? 数据库(Database,DB)简而言之就是存放数据的仓库,是为了实现一定目的,按照某种规则组织起来的数据的集合. 2.使用数据库的必要性 (1)结构化存储大量 ...

  10. 超链接提示效果jQuery+CSS+html

    我们知道浏览器自带了超链接提示, 只需要在超链接中加入 title 属性就可以了. <a href="#" title="吉大砍人案致1死1伤 受害者死前大喊他手里 ...