1、vi的两种模式:命令模式、输入模式

2、vi命令

2、1 vi 进入vi的一个临时缓冲区,光标定位在该缓冲区第1行第1列的位置上

2、2  vi file1 如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在该缓冲区第1行  第   1列的位置上,如下 vi 1.txt, 1.txt中的内容是hello world

2、3 vi + filename 如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在文件最后1行第1列的位置上,如 vi + 1.txt , 1.txt存在

2、4 vi + N f ilenme(N:为数字)如果file1文件不存在,将建立此文件;如该文件存在,则将其拷贝到一个临时缓冲区。光标定位在文件第N行第1列的位置上, 如 vi +2 1.txt

2、5 vi +/string file1 如果file1文件不存在将建立此文件;如该文件存在则将其拷贝到一个临时缓冲区。光标定位在文件中第一次出现字符串string的行首位置。如:vi +/hello 1.txt

3、退出vi

首先按Esc键,进入命令模式,再按:,然后按以下命令退出vi

3、1 w 将编辑缓冲区的内容写入文件,则新的内容就替代了原始文件。这时并没有退出vi,必须进一步输入下述命令才能退出vi:

:w filename(存入指定文件)

:q

3、2 :wq 即将上面的两步操作可以合成一步来完成,先执行w,后执行q

3、3  :x和zz(注意:zz前面没有“:”) 功能与(2)等价

3、4 :q!(或:quit)

强行退出vi,使被更新的内容不写回文件中。仅键入命令:q时,如vi发现文本内容已被更改,将提示用户使用“:quit”命令退出

4、命令模式和输入模式的切换

i——在目前光标前插入所要输入之文字。

a——在目前光标后开始输入文字。

o——在当前光标所在行下新增一空行,并从行首开始输入文字。

I——插于行首。

A——插于行尾。

O——在当前光标所在行上新增一空行,并从行首开始输入文字。

按下ESC键随时可返回vi的命令模式

5、基本命令

5、1 移动光标

5、1、1  h、j、k、l:分别控制光标左、下、上、右移一格。

Ctrl+b: 上滚一屏。

Ctrl+f: 下滚一屏。

Ctrl+d: 下滚半屏。

Ctrl+u: 上滚半屏。

G: 移到文件最后。

w: 移到下个字的开头。

b: 跳至上个字的开头。

5、2 删除

x: 删除当前光标所在后面一个字符。

#x: 删除当前光标所在后面#个字符。例如,5x表示删除5个字符。

dd: 删除当前光标所在行。

#dd: 删除当前光标所在后面#行。例如,5dd表示删除自光标算起的5行。

:l,#d: 例如,:1,12d表示删除自行1至行12的文字。

X: 删当前光标的左字符。

D: 删至行尾

5、3. 更改

cw: 更改光标处的字到此单字的字尾处。

c#w: 例如,c3w表示更改3个字。

cc: 修改行。

C: 替换到行尾。

5、4. 取代

r: 取代光标处的字符。

R: 取代字符直到按ESC为止。

5、5 复制

yw: 拷贝光标处的字到字尾至缓冲区。

P: 把缓冲区的资料贴上来。

yy: 拷贝光标所在之行至缓冲区。

#yy: 例如,5yy,拷贝光标所在之处以下5行至缓冲区。

5、6. 复原

u: 复原至上一操作。

g: 列出行号,及相关信息。

7. 列出行号

:set nu  (nu为行数)

5、8. 寻找字符串

/word由首至尾寻找“word”字符串,按n可往下继续找。

?word由尾至首寻找“word”字符串,按N可往前继续找。

5、9. 跳行

:100可跳至第100行。

5、10. 重复上一个命令

.重复上一个命令。

6、使用vi查找和替换

6、1 查找一个字符串

在vi命令模式下键入“/”,后面跟要查找的字符串,再按回车。vi将光标定位在该串下一次出现的地方上。键入n跳到该串的下一个出现处,键入N跳到该串的上一个出现处。

为了在文件中回头查找,使用?代替/。在此情况下,键入n跳到该串的上一个出现处,键入N跳到该串的下一个出现处。

如果vi找到要求的串,光标会停留在该串第一次出现的地方。如果没有找到该串,vi会在屏幕的最后一行显示pattern not found。

查找通常是区分大小写的,如果希望vi在查找过程中忽略大小写,则键入:set ic。要使其变回默认状态,则键入:set noic。

某些特殊字符(/&!.^*$\?)对查找过程有特殊意义,因此如果这些字符出现在查找串中必须进行转意。为转意一个特殊字符,需要在该字符前面加一个反斜杠(\)。例如,要查找字符串anything?,则键入/anything\?再按回车键。

6、2. 精确查找字符串

在vi中可以通过在字符串中加入如下特殊字符,从而使得查找更加精确。

* 匹配行首,字符串要以^开头

* 匹配行尾,字符串要以$结束

* 匹配词首,字符串的串首键入\<

* 匹配词尾,字符串的串尾键入\>

* 匹配任意字符,字符串的要匹配的位置键入一个点(.)

6、3. 替换一个字符串

替换字符串是以查找为基础,所有用于查找的特殊匹配字符都可以用于查找和替换。替换时要指定替换的范围(1,n),1和n指行号,n为$时指最后一行。s是替换命令,g代表全程替换。例如,

:l,$s/patternl/pattern2/g——将行l至结尾的文字,patternl的字符串改为pattern2的字符串,如无g则仅更换每一行所匹配的第一个字符串,如有g则将每一个字符串均做更换。

7、编辑多个文件

7、1. 将一个文件插入另一个文件中

将另一个文件filename插入当前文件的line#行位置。

命令格式    :line# r filename

例如,将文件file1插入到当前文件的当前光标位置,键入,  :r file1

7、2. 编辑一系列文件

要想编辑多个文件,需要在vi命令之后列多个文件名,中间用空格分开。键入:n进入下一个文件。要想跳转到下一个文件,而不保存对当前文件所做的修改,则键入:n!来代替:n。

vi file1 file2 file3

7、3. 文件之间复制行

为将行从一个文件file1复制到另一个文件file2,先编辑第一个文件file1,用#yy(#代表数字)把要复制的行拷贝到缓冲区,不退出vi,编辑另一个文件,键入,

:n file2

再按p键,把缓冲区中的内容贴在当前光标位置

vi 常用的命令的更多相关文章

  1. vi 常用编辑命令

    什么是vi: vi是Linux/Unix底下最常用的文本编辑器,可以理解为和Windows下的txt一样,咱们一般操作linux服务器的时候都是没有图形化界面的, 怎么移动光标,到哪个位置,替换修改什 ...

  2. VI常用的命令

    vi filename : 打开或者新建一个文件夹,并将光标置于第一行首位 I : 表示光标在当前位置编辑文本 A : 表示光标进入下以恶字符位置编辑文件 X : 每按一次删除光标所在位置的前面一个字 ...

  3. vi常用命令

    哎,看书上vi命令那么多,真是记不住.记几个常用的备忘吧. 在一般模式下(不可编辑),比如用vi命令打开或创建一个文件,常用的命令如下: 按键 作用 h或← 光标左移动一个字符 j或↓ 光标下移动一个 ...

  4. vi 常用命令行

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

  5. Linux的vi常用命令详解

    1.vi的基本概念  基本上vi可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:   ...

  6. Linux vi常用命令

    vi常用命令[Ctrl] + [f] 屏幕『向前』移动一页(常用)[Ctrl] + [b] 屏幕『向后』移动一页(常用)0 这是数字『 0 』:移动到这一行的最前面字符处(常用)$ 移动到这一行的最后 ...

  7. vi常用命令及快捷键

    vi常用快捷键 1)移动光标 h :光标左移一个字符j :光标上移一个字符k :光标下移一个字符l :光标右移一个字符 0 :光标移至行首$ :光标移至行尾 H :光标移至屏幕首行M :光标移至屏幕中 ...

  8. [转]vi 常用命令行

    From : http://www.cnblogs.com/sunormoon/archive/2012/02/10/2345326.html vi 常用命令行 1.vi 模式  a) 一般模式: v ...

  9. Linux笔记:vi常用命令

    vi编辑器是所有Unix及Linux系统下标准的编辑器,在很多时候我们都需要使用vi修改服务端配置,vi其实非常强大,只要命令使用熟练的情况下,编辑速度并不亚于现在的图形化编辑器,这里简单地介绍一下它 ...

随机推荐

  1. 附: K8S入门系列之集群健康检查

    Kubernetes的kubectl常用命令 1. pod操作 # 获取所有的pod kubectl get pods --all-namespaces -o wide # 使用yaml文件创建pod ...

  2. hibernate保存数据到mysql时的中文乱码问题

    因为hibernate底层使用的是jdbc的技术,所以我参考了别人使用jdbc保存数据到mysql里面时解决乱码问题的方法! 首先要告诉数据库要插入的字符串的字符集,mysql 默认使用的字符集是 l ...

  3. nginx方向代理详解及配置

    一代理服务器1.代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送代理服务器,代理服务器接受客户机请求之后,在向主机发出,并接受目的主机返回的数据,存放在代开服务器的硬盘中,在发送给客 ...

  4. XMPP即时通讯协议使用(十一)——Openfire表结构汇总

    行号 字段名称 字段描述 字段类型 长度 主键 说明 允许为空 用户组数据表(ofGroup) 1 groupName 组名 varchar2 50 ★   NOT NULL 2 descriptio ...

  5. Linux下创建动态库与使用

    参考文章:dll和so文件区别与构成:http://www.cnblogs.com/likwo/archive/2012/05/09/2492225.html 动态库路径配置- /etc/ld.so. ...

  6. 五、Redis五种类型 - 字符串类型

    1.介绍: 字符串类型是Redis中最基本的数据类型,可以存储任何形式的字符串数据,最大容量是512MB. key 和 value 都是区分大小写的. 2.命令介绍 (1).赋值: set key v ...

  7. Linux下tree的使用介绍

    1.在ubuntu系统中默认是没有tree这个命令的,需要安装,用下面的命令就可以安装tree这个命令工具sudo apt-get install tree. 2.首先来说说使用tree这个命令,就是 ...

  8. JDBC、ibatis(mybatis)、Hibernate有什么不同?

    ①JDBC编程流程固定,同时将sql语句和java代码混在了一起,经常需要拼凑sql语句,细节很繁琐: ②ibatis(mybatis)它不完全是一个ORM框架,因为MyBatis需要程序员自己编写S ...

  9. hdu 2089 不要62 (数位dp)

    Description 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer). 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除个别 ...

  10. Drbd+Heatbeat实现NFS共享文件存储高可用

    一.Drbd与Heartbeat简介 1.1   Drbd简介: Drbd是由内核模块和相关脚本而构成,用以构建高可用性的集群.其实现方式是通过网络来镜像整个设备.它允许用户在远程机器上建立一个本地块 ...