`
myfreespace
  • 浏览: 228638 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

Linux系统提供了一个完整的编辑器家族系列,如Ed、Ex、Vi和Emacs等,按功能它们可以分为两大类:行编辑器(Ed、Ex)和全屏幕编辑器(Vi、Emacs)。行编辑器每次只能对一行进行操作,使用起来很不方便。而全屏幕编辑器可以对整个屏幕进行编辑,用户编辑的文件直接显示在屏幕上,修改的结果可以立即看出来,克服了行编辑的那种不直观的操作方式,便于用户学习和使用,具有强大的功能。

linux vi命令是Linux系统的第一个全屏幕交互式编辑程序,它从诞生至今一直得到广大用户的青睐,历经数十年仍然是人们主要使用的文本编辑工具,足见其生命力之强,而强大的生命力是其强大的功能带来的。

本章中,我们将循序渐进地介绍如何使用linux vi命令来建立、编辑、显示以及处理文件。(注:文中的大写字母为[shift]键+相应的小写字母的组合)

linux vi命令简介

linux vi命令是“Visual interface”的简称,它在Linux上的地位就仿佛Edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。

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

linux vi命令没有菜单,只有命令,且命令繁多。Vi有三种基本工作模式:命令行模式、文本输入模式和末行模式。

命令行模式

任何时候,不管用户处于何种模式,只要按一下键,即可使linux vi命令行模式;我们在shell环境(提示符为$)下输入启动linux vi命令,进入编辑器时,也是处于该模式下。

在该模式下,用户可以输入各种合法的linux vi命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释,若输入的字符是合法的linux vi命令,则linux vi命令在接受用户命令之后完成相应的动作。但需注意的是,所输入的命令并不在屏幕上显示出来。若输入的字符不是Vi的合法命令,Vi会响铃报警。

文本输入模式

在命令模式下输入插入命令i、附加命令a 、打开命令o、修改命令c、取代命令r或替换命令s都可以进入文本输入模式。在该模式下,用户输入的任何字符都被Vi当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按键即可。

末行模式

末行模式也称ex转义模式。

linux vi命令和Ex编辑器的功能是相同的,二者主要区别是用户界面。在Vi中,命令通常是单个键,例如i、a、o等;而在Ex中,命令是以按回车键结束的正文行。linux vi命令有一个专门的“转义”命令,可访问很多面向行的Ex命令。在命令模式下,用户按“:”键即可进入末行模式下,此时linux vi命令会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个“:”作为末行模式的提示符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。末行命令执行完后,linux vi命令自动回到命令模式。例如:

:1,$s / A / a / g

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

若在末行模式下输入命令过程中改变了主意,可按键,或用退格键将输入的命令全部删除之后,再按一下退格键,即可使linux vi命令回到命令模式下。

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

vi命令详解

vi命令是unix下常用而重要命令,可在全屏幕方式下编辑一个或多个文件。若在vi执行时没有指定一个文件,那么vi命令会自动产生一个无名的空的工作文件。若指定的文件不存在,那么就按指定的文件名创建一个新的文件。若对文件的修改不保存的话,v i命令并不改变原来文件的内容。

  注意:vi命令并不锁住所编辑的文件,因此多个用户可能在同时编辑一个文件,那么最后保存的文件版本将被保留。

下面是vi命令使用的一些选项及含义:

  -c sub-command 在对指定的文件编辑前,先执行指定的命令 sub-command .

  -r filename 恢复指定的文件filename .

  -R 将指定的文件以只读的方式放入编辑器中,这样不会保存对文件的任何修 改。

  -y number 将编辑窗口的大小设为number行。

  下面是vi编辑所处的三种模式:

  命令模式 进入vi时所处的模式。在此模式下用户可输入各种子命令对进行*作,如删除行、粘贴行、移向下一个字、移向不同行等。

  文本输入模式 在此模式下可以修改一行的内容并增添新行。在命令模式下键入a 、i 或c键可进入文本输入模式,按Escape键可返回命令模式。

  命令项模式 在此模式下,可以通过子命令输入更多的参数。如:w子命令要求输入一文件名,”/”子命令要求输入一个查找项。用户使用Escape键返回命令模式。

下面是自命令模式下执行的,在同一行上移动的自命令

  h 将光标左移一格。

  l 将光标右移一格。

  j 将光标下移一格。

  k 将光标上移一格。

  w 将光标移到下一个小字的前面。

  W 将光标移到下一个大字的前面。

  b 将光标移到前一个小字的前面。

  B 将光标移到前一个大字的前面。

  e 将光标移到下一个小字的后面。

  E 将光标移到前一个大字的后面。

  fc 把光标移到同一行的下一个c字符处。

  Fc 把光标移到同一行的前一个c字符处。

  tc 把光标移到同一行的下一个字符c的前一格。

  Tc 把光标移到同一行的前一个字符c的后一格。

  number| 把光标移到递number列上。

下面是命令模式下在行间移动的子命令

  +或Enter 把光标移至下一行第一个非空白字符。

  - 把光标移至上一行第一个非空白字符。

  0 把光标移到当前行的第一个字符处。

  $ 把光标移到当前行的最后一个字符处。

  H 把光标移到屏幕最顶端一行。

  L 把光标移到屏幕最底端一行。

  M 把光标移到屏幕中间。

下面是命令模式下改变屏幕显示的子命令

  z- 把当前行作为屏幕的最后一行,并重新显示屏幕。

  z. 把当前行作为屏幕的中间一行,并重新显示屏幕。

  Ctrl+l 重新显示屏幕当前内容。

  /pattern/z- 寻找pattern的下一个位置,并把所在行设为屏幕的最后一行。

下面是在命令模式下用来显示页面的子命令

  Ctrl + f向后滚一页。

  Ctrl + d向后滚半页。

  Ctrl + b向前滚一页。

  Ctrl + u向前滚半页。

  Ctrl + e屏幕向下滚一行。

  Ctrl + y屏幕项上滚一行。

下面是在命令模式下用来查找字符串所使用的子命令

  /pattern 向后寻找指定的pattern ,若遇到文件尾,则从头再开始。

  ?pattern 向前寻找指定的pattern ,若遇到文件头,则从尾再开始。

  n 在上次指定的方向上,再次执行上次定义的查找。

  N 在上次指定的方向的相反方向上,再次执行上次定义的查找。

  /pattern/+number 将光标停在包含pattern的行后面第number行上。

  /pattern/-number 将光标停在包含pattern的行前面第number行上。

  % 移到匹配的”()”或”{}”上。

下面是在文本输入模式下用来输入文本的子命令(用户可在任何时候按Escape返回到命令模式):

  a 在光标之后开始输入文本。

  A在行尾开始输入文本。

  i在光标之前开始输入文本。

  I在行首第一个非空白字符前输入文本。

  o在光标所在行后插入一空行。

  O在光标所在行前插入一空行。

下面是在命令模式下改变文本所使用的子命令(用户可在任何的时候按Escape键返回到命令模式):

  cc或S 修改一整行。

  C 改变一行光标位置以后的部分。

  cw 改变光标所在单词。

  dd删除当前行。

  D 删除光标所在行光标后面的内容。

  dw删除光标所在的单词。

  J 把下一行内容加到本行行尾。

  rc把光符所在字符替换成c .

  R 覆盖本行内容。

  u恢复上一次的修改。

  x删除光标所在的字符。

  ~ 改变光标所在出字符的大小写。

  . 重复上一个*作。

  <<把当前行移到左边。

  >>把当前行移到右边。

下面是用于文件中拷贝文本的字命令

  p 将缓冲区内容取到光标所在行的下面一行。

  P 将缓冲区内容取到光标所在行的上面一行。

  ”bd 将文本删除至有名缓冲区b .

  ”bp 张贴有名缓冲区b中内容。

  yy把当前行放入缓冲区。

  Y 把当前行放入缓冲区。

  Yw把光标所在的单词放入缓冲区。

下面是用于保存文件的子命令

  :w 回写修改后的文件。

  :w filename 当filename不存在时,把修改后的文件存为文件filename ,当文件filename存在时,报错。

  !w filename 如果文件filename存在时,把修改后的文件保存为文件filename .

下面列出了在vi编辑的多个文件之间切换所用的子命令

  :n开始编辑vi激活的文件列表中的下一个文件。

  :n filenames 指定将被编辑的新的文件列表。

下面列出了用于在当前文件和另外一个文件间切换的子命令:

  :e filename 使用filename激活vi (在vi中装入另一个文件filename)。

  e!重新装入当前文件,若当前文件有改动,则丢弃以前的改动。

  :e+filename 使用filename激活vi ,并从文件尾部开始编辑。

  :e+number filename 使用filename激活vi ,并在第number行开始编辑。

  :e# 开始编辑另外一个文件。

下面是在本文件中加入其他文件代码所使用的子命令:

  :r filename读取filename文件,并将其内容加到当前文件后。

  :r ! command执行command文件,并将其输出加到当前文件后。

下面是vi中其他的子命令

  ctrl+g 取得正在编辑文件的有关信息。

  :sh启动sh ,从sh中返回可用exit或ctrl+d .

  :! Command 执行命令command .

  !!重新执行上次的:! Command子命令。

  :q退出vi ,若用户对编辑的文件有所修改,系统不会让用户使用q命令退出。

  :q!退出vi而不管是否对文件有改动。

  ZZ或:wq 保存对文件的修改并退出vi .

  用户可在一个特殊的文件.exrc中定义特殊的vi命令。在vi中使用这些命令时,必须在该
命令前加上一个冒号( :) 。

——————————————————-

vi 的模式

vi 是在很久以前就写的程序。在那个时候,键盘上没有现在熟悉的那么多功能键。所以,vi 设计成通过输入字符和 ESC 来控制输入和修改文本。

可能这对于一些人来说是个遗憾,但是你会发现你不需要改变手在键盘上的位置就可以完成所有的功能。结果是你的输入将快速起来。

为了完成交互的全屏幕编辑工作, vi 有三种模式。插入模式 (insert) 用于输入文本。在插入模式下,你输入的任何字符都将显示在屏幕并存于文件。命令 (command) 模式用于大多数编辑功能。在命令模式下,所有的输入都将产生一定的响应而不是直接到文本中,例如移动光标、删除一块文本、拷贝文本等。第三个模式是执行另 外的功能,例如查找、全局替换、处理多个文件等。这种模式是基于 ex 编辑器的。
启动 vi

当 vi 启动后,默认的模式是命令模式。按照下面的步骤试一试:输入程序名称启动 vi :

$ vi

你将看到类似下面的东西:

~~~~~~~~~~~~~~~~~~~~~~~~~Empty buffer

i–插入

现在我们输入 “i” 进入插入模式。字符 “i” 将不会回显。此后你输入的任何东西都将显示在缓存中。现在我们来输入一段文字。 例子中的话来自英文版的孙子兵法。注意光标的位置在例子中是个下划 线。

If wise, a commander is able to recognize changing circumstances and toact expediently. If sincere, his men will have no doubt of the certainty ofrewards and punishments. If humane, he loves mankind, sympathizes with others,and appreciates their industry and toil. If courageous, he gains victory byseizing opportunity without hesitation. If strict, his troops are disciplinedbecause they are in awe of him and are afraid of punishment. Shen Pao-hsu … said: ‘If a general is not courageous he will be unableto conquer doubts or to create great plans.’~~~~~~~~~~~~~~~~

Esc–Cancel

当你输入完了,按下 Esc 键返回到命令模式。 (如果你已经处于命令模式下,按 Esc 时会听到喇叭的声音。) Esc 可以撤消未完成的命令和终止插入模式。按 Esc 后,光标将停留在你最后输入的字符的下面。

很不幸,没有一个明显的标志表明你现在处于什么模式下。但是有简单的方 法来告诉你现在你所处的模式。如果你按下键,相应的字符出现在屏幕上,那么 你是在插入模式下,否则是命令模式下。如果你不能确定你现在所处的模式,那么 按 Esc 两次以听到喇叭声来确信你在命令模式下。
移动光标和简单的编辑

是看一看基本的移动光标命令的时候了。训练训练你的手指,让他们以后自动的执行你所想的命令吧。
最重要的移动命令

让我们来看看有多少影响光标移动的命令。
hh–光标左移

首先,按 5 下 h 让光标左移动 5 个 (如果你看到 h 跑到屏幕上了的话,一定是你忘记了按 Esc )。光标现在应该在 “plans” 中的 “p” 下面 (看下面的例子):

If wise, a commander is able to recognize changing circumstances and toact expediently. If sincere, his men will have no doubt of the certainty ofrewards and punishments. If humane, he loves mankind, sympathizes with others,and appreciates their industry and toil. If courageous, he gains victory byseizing opportunity without hesitation. If strict, his troops are disciplinedbecause they are in awe of him and are afraid of punishment. Shen Pao-hsu … said: ‘If a general is not courageous he will be unableto conquer doubts or to create great plans.’~~~~~~~~~~~~~~~

kk–光标上移

现在我们来按 5 次 k 让光标上移 5 行。也许你该认为应该有快捷方式了。好,现在就有个简单的方法:在你要采取的 行动前加上数字。按下 5k 你可以和按 5 下 k 有相同的结 果了。光标现在该在 “he” 的”e”下了。

If wise, a commander is able to recognize changing circumstances and toact expediently. If sincere, his men will have no doubt of the certainty ofrewards and punishments. If humane, he loves mankind, sympathizes with others,and appreciates their industry and toil. If courageous, he gains victory byseizing opportunity without hesitation. If strict, his troops are disciplinedbecause they are in awe of him and are afraid of punishment. Shen Pao-hsu … said: ‘If a general is not courageous he will be unableto conquer doubts or to create great plans.’~~~~~~~~~~~~~~~~

在使用这些功能的时候有些限制的。例如使用 h 或 l 移动光标超过了一行文字的头或尾,光标将停留在头或尾部,喇叭鸣叫提醒 你。

还有其他的类似 h 和 k 的吗?看一看表3.2。最好的熟悉他们 的的方法是多用他们。
表 3.2. 常见的方向键

命令 移动
h 左一个字符
j 下一行
k 上一行
l 右一个字符
w, W 前一个单词 (W 忽略标点)
b, B 后一个单词 (B 忽略标点)
$ 到行尾
^ 到行首第一个非空字符
0 行首
G 到缓冲首
nG 到第 n 行

大小写的命令是有一些区别的。小写字母一般以标点区分 “words.”,而大写则忽略他们。
最重要的编辑程序

让我们看看最简单也是最常用的编辑过程:

修改 没有人不犯错误。所以迟早你会碰到修改你输入的文本的时候。实际上花在字处理上的大多数时间是修改而不是输入新的东西。因此,你要知道如何方便地修改就很重要。

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

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

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

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

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

.–重复 重复编辑工作。

 

 

0
1
分享到:
评论

相关推荐

    linux下vi使用

    ### Linux下的vi编辑器使用 vi编辑器是Linux系统中常用的文本编辑工具之一,在大多数Linux发行版中都默认安装了vi编辑器。 #### vi编辑器模式 vi编辑器有三种基本模式:命令模式、插入模式和底行模式。 - **命令...

    Linux下VI的使用

    Linux下VI的使用

    linux下vi简单命令介绍

    ### Linux 下 vi 编辑器基础命令详解 #### 标题与描述概述 本文主要针对 Linux 系统下的 vi 编辑器进行简单的命令介绍,旨在帮助初学者快速上手并掌握基本操作方法。 #### 标签:Linux 下 vi 简单命令介绍 #### ...

    linux下Vi编辑器命令大全

    ### Linux下Vi编辑器命令大全 #### 概述 Vi编辑器是Unix及类Unix操作系统(包括Linux)中广泛使用的文本编辑工具。Vi编辑器具备强大的功能和丰富的命令集,适用于从简单的文本编辑到复杂的脚本编写等多种场景。本文...

    linux 下vi操作大全

    ### Linux 下 vi 操作大全 #### 一、引言 `vi` 是一款在 Linux 和 Unix 系统中广泛使用的文本编辑器。它以其高效、轻量级的特点深受系统管理员和程序员的喜爱。本文将详细介绍 `vi` 的基本使用方法、各种模式间的...

    linux下vi编辑器命令大全.docx

    Linux 下 vi 编辑器命令大全 Linux 下 vi 编辑器是一种功能强大的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。vi 编辑器是所有 UNIX 系统都会提供的编辑器,它提供了一个视窗设备,通过它可以编辑文件...

    Linux下Vi命令详解.pdf

    Linux下Vi命令详解的知识点涵盖了文本编辑器Vi/Vim的使用方法和技巧。Vi是一个功能强大的文本编辑器,在Linux系统中广泛应用,具备高效的编辑能力。Vim是Vi的增强版,提供了更多的功能和扩展性。 首先,Vi有三种...

    常用命令linux下vi编辑器命令大全

    常用命令linux下vi编辑器命令大全常用命令linux下vi编辑器命令大全

    linux下Vi编辑器常用命令

    ### Linux 下 Vi 编辑器常用命令详解 #### 一、进入 vi 的命令 1. **vi filename**:此命令用于打开或编辑一个名为 `filename` 的文件,并且默认会进入命令模式。 2. **vi +n filename**:通过这个命令可以打开文件...

    linux下vi的基本操作

    ### Linux下VI编辑器的基本操作详解 #### 一、VI编辑器概述 VI编辑器作为所有Unix及Linux系统下的标准编辑器,其功能强大且稳定可靠。它与系统版本无关,无论是在哪种版本的Unix或Linux系统中,VI编辑器的操作方式...

    linux下vi命令大全

    ### Linux下vi命令大全知识点详解 #### 一、vi编辑器简介 vi是Unix/Linux操作系统中最常用的文本编辑器之一,其全称为Visual Editor。vi编辑器功能强大且使用灵活,适用于快速编辑各种类型的文本文件。它支持多种...

    linux下VI使用说明

    **Linux下VI编辑器使用详解** VI(Visual Editor)是Linux和类Unix系统中的一个强大的文本编辑器,它以其高效的操作方式和丰富的功能而受到广大系统管理员和开发者的喜爱。VI编辑器分为两种模式:命令模式和插入...

    Linux下vi的基本使用.pdf

    《Linux下vi的基本使用》这篇文档详细介绍了在Linux操作系统中使用vi文本编辑器的基本操作,vi是Linux环境下广泛使用的全屏幕文本编辑工具。对于初学者来说,由于vi的操作方式与微软产品(如DOS的ED1T或Windows的...

    linux下vi,很不错的

    根据提供的标题、描述以及部分内容,我们可以总结出关于Linux下的vi编辑器的相关知识点: ### Linux下的vi编辑器 #### 一、vi编辑器简介 vi(visual editor)是一种广泛应用于Unix和类Unix系统(包括Linux)中的...

Global site tag (gtag.js) - Google Analytics