1.为什么学习vi?

  • vi很多系统都预装,如果我们的系统没有图像界面,可以使用vi
  • vi是轻量级且执行快速的编辑器

2.vi的几种模式

命令模式、插入模式、底行模式

1) 命令行模式(command mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

2) 插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

3) 底行模式(last line mode)

将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)

一、启动与关闭vi

1.启动

huiubantu@ubuntu:~$ vi

或者新建一个vi文件

huiubantu@ubuntu:~$ rm -f foo.txt
huiubantu@ubuntu:~$ vi foo.txt 会出现一个每行开头都是波浪号~的空文件,波浪号~指示那一行不存在文本

2.关闭vi,需要注意是在命令模式下

:q   #在vi编辑器中

或者确认真的关闭vi

:q!

二、编辑模式

1.进入插入模式

i按键进入,之后可以输入文本,当按下ESC按键,退出插入模式并返回命令模式

2.保存我们的工作

命令模式下(就是ESC之后)输入ex命令

:w    另外,保存并退出可以用:w再用:q 也可以直接用:wq

三、基本编辑操作

1.撤销上一次的修改

命令模式下,按u按键

2.追加文本(在行尾)

命令模式下,A按键

3.打开新的一行

命令状态下,o按键在当前行的下边打开一行,O按键在当前行的上边一行打开一行

4.删除文本

x按键会删除光标位置的一个字符,x命令之前带一个数字指明要删除的字符个数;

d命令之前带上一个数字指明要执行的删除次数,d命令之后总是带上一个移动命令,用来控制删除的范围

5.剪切、复制和粘贴文本

d 命令,删除的部分被复制到一个粘贴缓冲区中(看作剪切板)。过后我们执行小 p 命令把剪切板中的文本粘贴到光标位置之后,或者是大 P 命令把文本粘贴到光标之前。

y 命令用来“拉”(复制)文本,和 d 命令剪切文本的方式差不多。    这里有一些详细命令不像述

6.连接行

J按键用来把行与行之间连接起来(区别小写的 j 是用来移动光标)

四、查找和替换

1.查找一行

f命令查找一行,移动光标到下一个所指定的字符上。

如fa命令就是把光标定位到了同一行中的下一个出现的a字符上

2.查找整个文件

/命令

当你输入/命令后,一个 “/” 字符会出现在屏幕底部。下一步,输入要查找的单词或短语后,按下回车。光标就会移动到下一个包含所查找字符串的位置。通过 n 命令来重复先前的查找。

3.全局查找和替换

使用以下ex命令

:%s/line/Line/g      :是运行一个ex命令 %制定操作的行数是从第一行到最后一行  s指定操作是替换  /line/Line是查找类型与替换类型  g是全局的意思

 五、编辑多个文件

1.格式 vi file1 file2 file3……

2.文件之间的转换

从这个文件转到另一个文件

:n

回到先前的文件使用

:N

3.从一个文件复制内容到另一个文件

首先转换到缓冲区 1( foo.txt),输入:

:buffer 

下一步,把光标移到第一行,并且输入yy来复制这一行

然后,转换到第二个缓冲区

:buffer 2

移动光标到第一行,输入p命令把我们从前边文件中复制的一行粘贴到这个文件

4.插入整个文件到另一个文件

首先,打开要粘贴到的一个文件的vi会话

huiubantu@ubuntu:~$ vi ls-output.txt

然后在最后一行输入ex命令

:r foo.txt   表示读入foo.txt文件的所有内容

 六、保存文件

1.命令模式下,输入ZZ会保存并退出当前文件

2.ex命令:wq同样会保存并退出当前文件

 七、移动光标

命令模式下,vi提供了大量的移动命令,不详述

10 vi简介(重点)的更多相关文章

  1. Debian Vi 简介

    1.Vi 简介    Vi 是 Unix 世界里极为普遍的全萤幕文书编辑器,几乎可以说任何一台  Unix 机器都会提供这套软体.Linux 当然也有,它的 vi 其实是 elvis (版权问题),不 ...

  2. 140227项目开发及上线过程遇到的10个问题(重点: FCK过滤替换)

    1.替换条件判断问题 String s = (String)map2.get("contentIntro"); if(s != null && s.length() ...

  3. Day01_UNIX基础及VI简介

    2013年09月29日 星期日 11时35分58秒 Linux 是一个区别于Windows的操作系统 Linux 是一个多用户的操作系统 Linux 系统通过账号区分不同的用户 在使用Linux系统的 ...

  4. -1-0 Java 简介 java是什么 java简单介绍

    Java是一门纯粹的面向对象的高级的平台无关的编程语言 官网介绍: 了解 Java 技术  https://www.java.com/zh_CN/about/ 推荐词条: https://zh.wik ...

  5. ML.NET 0.10特性简介

    IDataView被单独作为一个类库包 IDataView组件为表格式数据提供了非常高效的处理方式,尤其是用于机器学习和高级分析应用.它被设计为可以高效地处理高维数据和大型数据集.并且也适合处理属于更 ...

  6. Apache Commons Lang » 3.10使用简介

    ============================================================= 行文介绍: 1.诞生背景 2.引入方案 3.简单介绍 4 .详情介绍 文档: ...

  7. 2017/2/10:Manven简介与项目管理(入门)

    1.Maven工程的创建 2.使用Manven manven配置文件主要集中在 http://m.blog.csdn.net/article/details?id=50316383

  8. Linux:vi & vim(待学)

    VI编辑器_终端编辑器 目标 vi简介 打开和新建文件 三种工作模式 常用命令查询 1 简介 1.1 学习vi的目的 在工作中, 要对 服务器上的 文件进行 简单 的修改, 可以使用 ssh 登录到远 ...

  9. Redis从入门到高级笔记【涵盖重点面试题】

    NoSQL数据库 DBEngines网站中会统计目前数据库在全世界的排名 1.1 什么是NoSQL 最常见的解释是"non-relational",很多人说它是"Not ...

随机推荐

  1. PCB表面处理工艺

    PCB表面处理最基本的目的是保证良好的可焊性或电性能.由于自然界的铜在空气中倾向于以氧化物的形式存在,不大可能长期保持为原铜,因此需要对铜进行其他处理. 1.热风整平(喷锡) 热风整平又名热风焊料整平 ...

  2. c语言中的位移位操作

    先要了解一下C语言里所有的位运算都是指二进制数的位运算.即使输入的是十进制的数,在内存中也是存储为二进制形式. “<<”用法: 格式是:a<<m,a和m必须是整型表达式,要求m ...

  3. run a Freight robot (3)

    5.Logging In Once the robot is turned on and the robot is on the network, ssh into the computer of t ...

  4. [转]-如何将Eclipse中的项目迁移到Android Studio 中

    英文地址:http://developer.android.com/sdk/installing/migrate.html 翻译:Android Studio 中文组(大锤译) 如果你之前有用Ecli ...

  5. Maven生命周期(插件)

    maven拥有三套相互独立的生命周期,它们分别是clean,default和site.clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site 生命周期的目的是建立项目站 ...

  6. UC打通高德POI数据,用大数据描绘周边热点地图

    UC打通高德POI数据,用大数据描绘周边热点地图   2016-10-25 11:13  来源:互联网  我来投稿  我要评论   在北京工作的小李最近很苦恼,房东因小区周边规划了大型商场而坚持涨价. ...

  7. json与jsonp应用及其他ajax数据交互方式

    1.json是数据交换格式,使用实例如下: $.getJSON( '/manage/asset/asset_delByIds.action', { 'ids':id }, function(data) ...

  8. Android生命周期和Service生命周期

    android生命周期 运行:oncreate → onstart → onresume暂停:onresume → onpause:再次运行:onresume停止:onpause → onstop → ...

  9. linux 跨IP拷贝命令 scp

    原文:http://blog.csdn.net/mexican_jacky/article/details/52847094 scp -r ROOT/ tms2api@10.230.4.215:/Ja ...

  10. Android_SDK的常用命令

    一.配置环境变量 要想使用这些命令,就必须先配置环境变量.  将android-sdk-windows目录下的platform-tools目录和tools目录配置到path环境变量中 二.adb命令 ...