linux中vi中c命令行,linux vi命令详解:屏幕文本编辑器Vi

本章将详细介绍linux vi命令。文本编辑器是所有计算机系统中最常使用的一种工具。用户在使用计算机的时候,往往需要建立自己的文件,无论是一般的文本文件、数据文件,还是编写的源程序文件,这些工作都离不开linux vi命令。

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键即可。在命令模式下输入“:”即可切换到末行模式,然后输入命令。

linux vi命令的进入与退出

linux vi命令的进入

用户登录到系统中之后,系统给出提示符“$”。在提示符后键入Vi和想要编辑(或建立)的文件名,便可进入Vi。

[例1] 键入命令:

$ vi example.c

屏幕显示如下:

~

~

~

~

~

~

~

~

~

~

~

~

~

“ example.c” [New File]

如果只键入Vi,而不带文件名,也可以进入Vi。之后在光标处键入文件内容,退出Vi时,只需在退出命令后输入文件名即可。

进入Vi之后,首先进入的就是命令模式,也就是说等待命令输入而不是文本输入。这时输入的字母都将作为命令来解释。光标停在屏幕***行首位上(用表示),其余各行行首均有一个“~”符号,表示该行为空行。***一行也称状态行,显示出当前正在编辑的文件名以及其状态。如本例是[New File],表示example.c是一个新建的文件。如果example.c文件已在系统中存在,那么输入上述命令后,则在屏幕上显示出该文件的内容,并且光标停在***行的首位,在状态行显示出该文件的文件名、行数和字符数。

[例2] 键入命令:

$ vi example.c

然后键入:

#include

main ( )

{ int k ;

for ( k=0 ; k<3 ; k++) add( );

}

add( )

{ static int x=0;

x++ ;

printf(“x = %d\n”, x);

}

~

~

~

~

“ example.c” [ New File]

注意,在这里我们为了节省篇幅起见,屏幕只显示15行。事实上,初始的显示行数与用户所用终端有关,一般的CRT终端可显示25行。在窗口系统中,显示行数与运行linux vi命令的那个窗口有关。然而我们可以对显示行数进行设置。例如,在能显示25行的CRT终端上,让Vi只显示15行。设置的方法将在本节后面介绍。

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

进入linux vi命令时,用户不仅可以指定一个待编辑的文件名,而且还有许多附加操作。

如果希望在进入linux vi命令之后,光标处于文件中特定的某行上,可在linux vi命令后加上任选项+n,其中n为指定的行数。

[例3] 键入命令:

$ vi +5 example1.c

后,屏幕显示如下:

#include

main ( )

{ int k ;

for ( k=0 ; k<3 ; k++) add( );

}

add( )

{ static int x=0;

x++ ;

printf(“x = %d\n”, x);

}

~

~

~

~

~

“ example.c” 12 lines, 125 characters

光标将位于文件example1.c中的第5行上。

如果希望在进入linux vi命令之后光标处于文件最末行,则只需把命令中附加项“+”后面的数字n省略掉即可。

在进入linux vi命令时,除了可以指定一个光标起始行号之外,还可以在命令中指定一个模式串,此时在进入linux vi命令后,光标就处于文件中***个与指定模式串相匹配的那行上。

[例4] 键入命令:

$ vi +/int example1.c

屏幕显示如下:

#include

main ( )

{ int k ;

for ( k=0 ; k<3 ; k++) add( );

}

add( )

{ static int x=0;

x++ ;

printf(“x = %d\n”, x);

}

~

~

~

~

~

“ example.c” 12 lines, 125 characters

光标将位于文件example1.c中的第3行上。

使用linux vi命令可以同时编辑多个文件,只要在进入linux vi命令的命令中写入所要操作的文件即可,还可以使用通配符。

[例5] 键入命令:

$ vi *.cat

就可以编辑所有后缀为cat的文件了。当然,您还可以使用shell中内置的模式匹配来装载文件,这样会更富技巧性。一旦您在命令行中包含了所有的待编辑文件名,就可以在linux vi命令中方便地移来移去。

退出Vi

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

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

在末行模式下,输入命令:w

linux vi命令保存当前编辑文件,但并不退出,而是继续等待用户输入命令。在使用w命令时,可以再给编辑文件起一个新的文件名。

[例6]

:w newfile

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

File exists (use ! to override)

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

:w! newfile

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

在末行模式下,输入命令:q

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

No write since last change (use ! to overrides)

提示用户该文件被修改后没有保存,然后linux vi命令并不退出,继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出linux vi命令时,可使用命令:q!

linux vi命令放弃所作修改而直接退到shell下。

在末行模式下,输入命令:wq

linux vi命令将先保存文件,然后退出linux vi命令返回到shell。

在末行模式下,输入命令:x

该命令的功能同命令模式下的ZZ命令功能相同。

linux vi命令中的行号

linux vi命令中的许多命令都要用到行号及行数等数值。若编辑的文件较大时,自己去数是非常不方便的。为此linux vi命令提供了给文本加行号的功能。这些行号显示在屏幕的左边,而相应行的内容则显示在行号之后。

使用的命令为:在末行方式下输入命令:

:set number

需要说明的是,这里加的行号只是显示给用户看的,它们并不是文件内容的一部分。

【编辑推荐】

【责任编辑:faya TEL:(010)68476606】

点赞 0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 第一篇 Linux和C编程基础  第1章 Linux系统概述   1.1 Linux操作系统介绍     1.1.1 Linux的发展历程     1.1.2 Linux的特性     1.1.3 Linux的内核版本和发行版本    1.2 C语言简介     1.2.1 C语言的发展历史     1.2.2 C语言的特点    1.3 Linux的安装、启动与关闭    1.4 Linux的基本使用     1.4.1 Linux终端     1.4.2 Linux Shell     1.4.3 Linux的常用命令    1.5 Linux下程序的开发环境和开发过程    1.6 习题   第2章 C编程基础、Vi和Emacs编辑器    2.1 C程序的结构    2.2 C语言的基本数据类型     2.2.1 整型     2.2.2 浮点型     2.2.3 字符型    2.3 运算符和表达式     2.3.1 算术运算符与算术表达式     2.3.2 赋值运算符与赋值表达式     2.3.3 逗号运算符与逗号表达式    2.4 标准输入输出函数     2.4.1 字符输出函数putchar     2.4.2 字符输入函数getchar     2.4.3 格式化输出函数printf     2.4.4 格式化输入函数scanf    2.5 Vi编辑器的使用     2.5.1 Vi的工作模式     2.5.2 启动Vi     2.5.3 保存文件和退出Vi     2.5.4 光标的移动     2.5.5 文本的删除     2.5.6 文本查找和替换     2.5.7 文本的复制与粘贴    2.6 Emacs编辑器的使用    2.7 命名规范     2.7.1 标识符     2.7.2 关键字     2.7.3 命名规范    2.8 面试题选与实例精讲     2.8.1 面试题选     2.8.2 实例精讲    2.9 习题   第3章 C程序控制结构和gcc编译器    3.1 C程序的控制结构     3.1.1 C程序语句概述     3.1.2 C程序的3种基本控制结构    3.2 分支控制结构     3.2.1 关系运算符与关系表达式     3.2.2 逻辑运算符与逻辑表达式     3.2.3 if语句     3.2.4 switch语句    3.3 循环控制结构     3.3.1 while语句     3.3.2 do...while语句     3.3.3 for语句     3.3.4 break语句和continue语句    3.4 gcc编译器     3.4.1 程序的编译过程     3.4.2 gcc的常用选项     3.4.3 gcc的报错类型及对策    3.5 面试题选与实例精讲     3.5.1 面试题选     3.5.2 实例精讲    3.6 习题   第4章 C函数、数组、指针和调试器gdb   第5章 C语言预处理、结构体和make的使用  第二篇 Linux系统编程  第6章 文件操作   第7章 进程控制   第8章 线程控制   第9章 信号及信号处理   第10章 进程间通信  第三篇 Linux网络和图形界面编程  第11章 网络编程   第12章 GTK+图形界面编程  第四篇 Linux项目实践  第13章 项目实践:BT下载软件的开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值