vi是Linux系统中的文本编辑器,是最常用的文本编辑工具软件之一。vi是字符界面下最常用的编辑工具,其功能强大,占用资源少,但不支持鼠标操作。现在出现了图形界面下的vi,称为VIM,启动菜单选项为“开始→应用程序→实用工具→VIM编辑器”,支持鼠标操作,有类似其他软件的菜单和快捷按钮。字符界面下vi的操作规则可以用在图形界面下的VIM中,下面主要介绍字符界面的vi编辑器。

vi有命令行状态和文本编辑两种状态,vi的命令行状态的命令丰富,功能强大,在命令行状态下按Insert键或者输入i、I、a等字符进入编辑状态,在编辑状态按Esc键可以回到命令行状态。

为了防止初学者在进入Vi之后无法操作时,使用者需要知道,在vi编辑器中存在三种模式,分别是命令模式、编辑模式、末行模式,对应的是分别进行命令操作,编辑文本文档和退出编辑保存文件,其关系如下所示:

图1 各模式间的装换

为了更清楚的使用,我们使用vi建立一个hello.c文件,并运行,过程如下所示:

首先启动vi并名命文件hello.c,如下图所示:

图2 示例模式的转换1

下面是进入vi编辑后的界面,我们在键盘上输入“i”键,即可进行编辑模式(同时在左下角有Insert字符串出现),这是,我们可以进行输入文本,内容如下图所示:

图3 示例模式的转换2

在输入完毕之后,我们按“ESC”键退出编辑模式,进入到命令行模式,接着再按“:”进入到末行模式,此时光标移动到文本最后一行,然后我们输入"wq"字符进行文件的存盘退出,如下图所示:

图4 示例模式的转换3

之后就退出到文件夹界面,如下图所示为我们创建的文件

图5 示例模式的转换4

上面就是一些基本的操作流程,下面让我们了解更加详细的vi操作

1、启动vi编辑器

vi编辑器使用命令vi启动,启动方式有多种,如下所示:

vi filename //打开或新建文件filename,并将光标置于第一行行首。

vi +n filename //打开文件filename,并将光标置于第n行行首。

vi + filename //打开文件filename,并将光标置于最后一行行首。

vi +/pattern filename//打开文件filename,并将光标置于第一个与pattern相匹配的字符串处。

vi -r filename //恢复上次因系统崩溃而中止编辑的文件filename。

vi filename1....filenamen //打开多个文件,依次进行编辑。

2、 命令行状态

1)、文本类

h:光标左移一个字符。

l:光标右移一个字符。

Space键:光标右移一个字符。

Backspace键:光标左移一个字符。

k或Ctrl+p:光标上移一行。

j或Ctrl+n:光标下移一行。

Enter键:光标下移一行。

w或W:光标右移一个字至下个字的字首。

b或B:光标左移一个字至上个字的字首。

e或E:光标右移到当前字的字尾。

):光标移至本句句尾。

(:光标移至本句句首。

}:光标移至本段落开头。

{:光标移至本段落结尾。

nG:光标移至第n行行首。

n+:光标下移n行。

n-:光标上移n行。

n$:光标移至第n行行尾。

H:光标移至屏幕顶行。

M:光标移至屏幕中间行。

L:光标移至屏幕最后行。

0:光标移至当前行行首。

$:光标移至当前行行尾。

2).屏幕类命令

Ctrl+u:屏幕向上滚动半屏,同时光标向上移动到相应行。

Ctrl+d:屏幕向下滚动半屏,同时光标向下移动到相应行。

Ctrl+b:屏幕向上滚动一屏,同时光标向上移动到相应行。

Ctrl+f:屏幕向下滚动一屏,同时光标向下移动到相应行。

nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

3).插入文本类命令

i:由命令行状态进入编辑状态,输入的内容插入到光标前。

I:由命令行状态进入编辑状态,输入的内容插入到当前行行首。

a:由命令行状态进入编辑状态,输入的内容插入到光标后。

A:由命令行状态进入编辑状态,输入的内容插入到当前行尾。

o:由命令行状态进入编辑状态,在当前行之下新插入一行。

O:由命令行状态进入编辑状态,在当前行之上新插入一行。

r:不进入编辑状态而用输入的字符替换当前字符。

R:由命令行状态进入替换编辑状态,用输入的字符替换当前字符。

s:同命令a。

S:由命令行状态进入编辑状态,并删除当前行内容。

ncw或nCW:由命令行状态进入编辑状态,并删除从当前位置开始的n个字。

nCC:由命令行状态进入编辑状态,并向下删除从当前行开始的n行。

4).删除命令

ndw或ndW:不进入编辑状态,删除光标处开始及其后的n-1个字。

d0:不进入编辑状态,删除当前光标处至当前行首的字符。

d$:不进入编辑状态,删除当前光标处至当前行尾的字符。

ndd:不进入编辑状态,删除当前行及其后的n-1行。

x:不进入编辑状态,删除光标后的字符。

X:不进入编辑状态,删除光标前的字符。

5).搜索及替换命令

/pattern:从光标开始处向文件尾搜索pattern,并对搜索到的pattern加上标记。

?pattern:从光标开始处向文件首搜索pattern,并对搜索到的pattern加上标记。

n:同一方向重复上一次搜索命令。

N:反方向重复上一次搜索命令。

:s/p1/p2/g:将当前行中所有p1均用p2代替。

:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2代替。

:g/p1/s//p2/g:将文件中所有p1均用p2替换。

:n1,n2co n3:将n1行到n2行之间的内容复制并插入到第n3行下。

:n1,n2 m n3:将n1行到n2行之间的内容移动并插入到第n3行下。

:n1,n2 d :将n1行到n2行之间的内容删除。

6).存盘与退出命令

:w---当前文件存盘。

:e filename---打开文件filename进行编辑。

:x----保存当前文件并退出。

:q---退出vi。

:q!---不保存文件内容并退出vi。

:!command-----执行shell命令command。

:n1,n2 w! filename---将n1至n2行的内容写入文件名为filename的文件中。

:r!command-----将Shell命令command的执行结果插入到当前行下面。

7).寄存器操作命令

"?nyy:将当前行及其下n行的内容保存到寄存器?中,其中?为字母,n为数字。

"?nyw:将当前行及其下n个字保存到寄存器?中。

"?nyl:将当前行及其下n个字符保存到寄存器?中。

"?p:取出寄存器?中的内容并将其插入到光标的后面。

ndd:将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中。

3、编辑状态      

vi编辑器从命令行状态进入到编辑状态后就可以全屏幕的方式对文本内容进行编辑,编辑过程中可以通过键盘的“Insert”键在“插入”和“替换”状态之间切换,可以使用键盘的4个方向键及其“Home”、“End”、“PageUp”、“PageDown”等键移动光标,可以使用退格键和删除键对文本内容进行删除。编辑完成后按键盘的“Esc”键回到命令行状态执行命令“:wq”存盘退出,或者“:q!”不存盘退出。

Linux中vi编辑器的使用相关推荐

  1. linux文本编辑器vi实验心得,linux中vi编辑器的练习心得

    1. 用vi编写一个文档test.txt,将其存放在用户在用户主目录下,内容如下: Plagiarism is breach of Integrity.It is a form of cheating ...

  2. Linux中vi编辑器的使用详解

    2019独角兽企业重金招聘Python工程师标准>>> vi编辑器是Linux系统下标准的编辑器.而且不逊色于其他任何最新的编辑器.可是会用的有多少呢.下面介绍一下vi编辑器的简单用 ...

  3. linux中vi编辑器(转载)

    三种模式相互切换 在命令终端输入vi进入vi编辑器. 命令模式:进入编辑器即进入命令模式, 输入模式:在命令模式下输入"i "进入输入模式: 末行模式:按":" ...

  4. linux 编辑脚本 vi,linux中vi编辑器的练习心得

    1. 用vi编写一个文档test.txt,将其存放在用户在用户主目录下,内容如下: Plagiarism is breach of Integrity.It is a form of cheating ...

  5. linux 编辑文件乱码,Linux中vi编辑器显示中文乱码的问题

    方法: 由于在windows下默认是gb编码,而我的vim默认是utf-8(gedit默认也是utf-8),所以打开会成乱码.修改了一下配置文件,使vi支持gb编码就好了. $vi~/.vimrc l ...

  6. Linux中Vi编辑器和Vim编辑器

    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进.

  7. 在linux中的vi中的删除操作,linux中vi和vim操作

    一.简单介绍 vi 和 vim 类似于windows的文本编辑器 所有的Linux系统都会内置vi文本编辑器 vim可以看做是vi增强版,具有程序编辑能力,支持语法高亮,代码补全,编译及错误跳转等功能 ...

  8. 用linux如何用vi编写c程序,linux中VI编写C程序。。。

    在linux中编写C程序时不像编写shell那样开头要#!/bin/bash,但是在C程序中要指定头文件(头文件是指输入输出,宏等,而且要首先声明,也是必须要开始就声明的) 写好C代码后要给C文件赋予 ...

  9. delphi中richedit中光标如何定位到最后_嵌入式开发之Linux系统中Vi编辑器的使用

    请大家关注点赞,已经完成物联网相关开发,会从硬件层,硬件中间层,传输层,软件中间件(物联网云平台),APP开发相关博文.首先从嵌入式开发博文开始!上一节关于<>.本节关于Linux系统中V ...

最新文章

  1. 全球奖金最高的科学奖项颁发:黑洞拍摄团队、肥胖症治疗等获奖;2位清华北大校友入围...
  2. 运行时异常与一般异常的区别
  3. 细说HTML元素的ID和Name属性的区别
  4. 电气工程及其自动化专业英语苏小林翻译_“万千星光 智能点亮” 电气工程及其自动化专业讲座...
  5. Unity3D学习笔记(七):叉乘和四元素
  6. 简单话题:LED呼吸灯和串口LED指示灯
  7. Hands-On Modeler (建模人员参与程序开发)
  8. imageNamed和imageWithContentsOfFile-无法加载图片的问题
  9. C语言 指针与数组
  10. 第三季-第1课-程规划与学习方法
  11. 【MATLAB】修改黑色炫酷主题darcula.prf
  12. C语言中的volatile三种作用,volatile关键字在嵌入式C语言中的使用
  13. uc7.5java下载,uc浏览器7.5版手机下载-uc浏览器7.5官方版v7.5 安卓版 - 极光下载站...
  14. np.array数组的切片
  15. servlet使用监听器统计网站在线人数
  16. run vue task的项目报错:Error while running task C:\IT\xxxxxx:serve with message‘spawn vue-cli-service
  17. 资深大牛告诉你什么是架构师
  18. 1078: 平均年龄
  19. 51单片机入门 第一篇:LED灯
  20. rest service

热门文章

  1. 哪些食物会使皮肤变黑?
  2. 曼尼托巴大学计算机科学硕士,曼尼托巴大学电气和计算机工程硕士解析
  3. Linux与Android安全差异
  4. 向量空间,子空间,列空间,零空间(PartIII)
  5. Android开发——编译FFmpeg(一、前言)
  6. 我自己注册的账号,凭什么不让我注销?谁动了我们的“注销权”...
  7. 蓝桥杯 c/c++真题 数字三角形
  8. 使用 TestFight 构建 Beta 测试版本
  9. Re:萌娘百科上的黑幕实现
  10. HHUOJ 1758 Problem D