Vi的用法

1.简介

Vi,是一个文本编辑器,可以执行输出、删除、查找、替换、块操作等众多文本操作,vi不是一个排版程序。不像word或WPS那样可以对字体、格式、段落等属性进行编排,他只是一个文本编辑器。

2.进入vi文本编辑器的方式

方式

说明

vi

进入vi默认模式

vi  filename

打开新建文件filename,并将光标置于第一行

vi +n filename

打开文件filename,并将光标置于n行首

vi + filename

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

vi +/pattern  filename

打开文件filename ,并将光标置于第一个与pattern匹配的行。

3.Vi的三种模式

4.命令模式下的操作  a o  i

1)   命令模式下进入输入模式

命令

说明

i

光标所在位置前开始插入文本

I

将光标移至当前行的行首,然后在其插入文本

a

当前光标所在位置之后追加文本。

A

将光标挪到当前行的行尾,从那里开始插入新文本

o

将光标所在行的下面新开一行,并将光标置于该行的行首,输入文本

O

在光标所在行的上面插入一行,并将光标置于该行的行首,等待输入文本

2)   命令模式下的光标定位

命令

说明

G

将光标移至最后一行行首   尾部

gg

将光标移至第一行(首行)    首部

nG

光标移至第n行的行首     直接定位

n+

光标下移n行

n-

光标向上移动n行

n$

光标移至第n行行尾  相对于当前行

0

移动至所在行的行首   绝对行首

$

移到光标所在行的行尾

^

移到光标所在行的第一个字符(非空格)   非空白符

h,j,k,l

左,下,上,右

3)   命令模式下的替换和删除

命令

说明

rc

用字符c替换光标所指向的当前字符

nrc

用字符c替换光标所指向的n个字符

x

删除光标处的字符

nx

删除从光标位置开始向右的n个字符

dw

删除一个单词

ndw

删除n个指定的单词

db

删除光标所在位置之前的单词

ndb

删除所在位置之前的n个单词

dd

删除光标所在整行

ndd

删除n行

dG

删除光标位置到最后一行的所有内容

d1G

删除光标位置到第一行的所有内容

d$

删除光标位置到当前行的末尾的内容

d0

删除光标位置到当前行开始的内容

4)   命令模式下的复制和粘贴

命令

说明

yy

当前行内容复制到缓冲区

nyy

将当前行开始n行内容复制到缓冲区

yG

将当前光标位置到最后一行的所有内容复制到缓冲区

y1G

将当前光标位置到第一行的所有内容复制到缓冲区

y$

将当前光标到当前行尾内容复制到缓冲区

y0

将当前光标位置到当前行开始的内容复制缓冲区

p

将缓冲区的内容写出到光标所在位置

5)   命令模式下的搜索

命令

说明

/str

向下查找

?str

向上查找

n

相同方向移动

N

向反方向移动

6)   命令模式下撤销、重做

命令

说明

u

撤销

Ctrl+r

重做撤销的动作

7)   命令模式下退出vi

命令

说明

ZZ

存盘退出

ZQ

不保存退出

8)   翻屏

命令

说明

Ctrl+f

向下翻

Ctrl+b

向上翻

5.末行模式下的操作

1)   末行模式下退出vi

命令

说明

:q

退出  没有动过文件

:wq

保存并退出

:q!

不保存并退出

:w

保存

:x

保存退出等价于:wq

2)   末行模式下的跳行

命令

说明

:n

直接输入移动的行号

3)   在命令模式下搜索和替换字符串

命令

说明

:/str

向后搜索    n 同方向切换  N 反方向切换

:?str

向前搜索     n 同方向切换  N 反方向切换

:/str/w file

将包含有str行的写到file中    搜索  io读写     写磁盘

:/str1/,/str2/w file

从str1开始到str2结束的内容写入到file文件中

:s/str1/str2/

找到的第一个str1替换为str2  在同一行内替换第一个

:s/str1/str2/g

找到的所有的str1替换为str2   在同一行内替换所有

:n1,n2s/str1/str2/g

从n1行到n2行找到所有的str1替换为str2

:1,.s/str1/str2/g

从第一行到当前位置所有的str1替换为str2

:.,$s/str1/str2/g

从当前位置到结尾所有的str1替换为str2

4)   在命令模式下复制、移动和删除文件行

命令

说明

:n1,n2 co n3

将从n1开始到n2开始为止所有内容复制到n3后面  copy

:n1,n2 m n3

将从n1开始到n2为止的所有内容移动到n3后面

:d

删除当前行

:nd

根据指定的行号删除指定的行

:n1,n2 d

删除从n1开始到n2所有内容

:.,$d

删除从当前行到结尾的所有内容

:0,.d

删除当前行到首行

:/str1/,/str2/d

删除从str1开始到str2为止所有内容

5)   在命令模式下的文件相关命令

命令

说明

:w file

将当前编辑的内容写到file文件中    另存为

:n1,n2 w file

将从n1开始到n2结束的行写入到file中

:nw file

将第n行写入到文件中

:1,.w file

从第一行起到光标当前位置写入到file文件中

:.,$ w file

从当前位子到文件结尾内容写入到file中

:r file

打开另一个文件

:e file

新建file文件

:f file

把当前文件改名为file文件

6)   在命令模式下执行Shell命令

命令

说明

:!cmd

运行Shell命令

:r!cmd

将命令运行的结果写入当前位置

7)   设置vi的环境

命令

说明

:set nu

设置行号

:set nonu

取消行号

:set       readonly

设为只读

Vi 编辑器的更多相关文章

  1. vi编辑器使用

    显示行号 set nu 取消行号 set nonu 定位到某一行 gg 定位到首行 G 定位到最后一行 在VI编辑器中切换调用外部shell命令 :!ifconfig   在编辑过程中,看ip地址 插 ...

  2. vi编辑器命令

    Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配.注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Windows 下的 word 有排版功能.v ...

  3. Linux学习之一--VI编辑器的基本使用

    vi编辑器是Linux系统下标准的编辑器.而且不逊色于其他任何最新的编辑器.可是会用的有多少呢.下面介绍一下vi编辑器的简单用法和部分命令.让你在Linux系统中畅行无阻. 基本上vi可以分为三种状态 ...

  4. vi编辑器的常规使用

    1.命令模式(command mode)-执行命令 在该模式中,可以输入命令来执行许多种功能.控制屏幕光标的移动,字符.字或行的删除,移动复制某区段及进入Insert mode下,或者到 last l ...

  5. vi编辑器 使用 命令

    vi编辑器 1)命令模式 打开文件后.默认处于命令模式,命令模式无法编辑文件 2)输入模式 在命令模式下 按 i 进入输入模式,便于编辑文件内容 3)末行模式 编辑内容后,按esc进入到命令模式,再按 ...

  6. Linux 中 Vi 编辑器的简单操作

    Linux 中 Vi 编辑器的简单操作 Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi  filename //打开或新 ...

  7. 第三天 vi编辑器使用和软件安装

    [复习] 判断题: 查看某文件权限为rwxr-xr-- ,则其所属组权限为只读. 对一个目录有w权限,表示可以修改目录下文件内容. 3..tar.gz格式的压缩包可以使用tar -xjf解压缩 4.m ...

  8. linux基础-第九单元 利用vi编辑器创建和编辑正文文件

    vi编辑器简介 什么是vi vi编辑器的操作模式 vi编辑器的3种基本模式 在vi编辑器中光标的移动 移动光标位置的键与光标移动间的关系 进入插入模式 从命令行模式进入插入模式的命令 在命令行模式下删 ...

  9. linux vi编辑器操作手册

    简介 Linux下的文本编辑器有很多种,vi 是最常用的,也是各版本Linux的标配.注意,vi 仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但是不像 Windows 下的 word 有排版功 ...

  10. linux中vi编辑器的使用

    vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本 编辑器,这里只是简单地介绍一下它的用法和一小部分指令.由于对Unix及Linux系统的任 何版本,vi编辑器是完 ...

随机推荐

  1. 洛谷P1196 [NOI2002] 银河英雄传说

    #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #includ ...

  2. 洛谷——P1014 Cantor表

    P1014 Cantor表 题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 1/1 1/2 1/3 1/4 1/5 … 2/1 ...

  3. HDU 5861 Road(线段树 区间修改 单点查询)

    Road Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  4. 【BZOJ 1150】 1150: [CTSC2007]数据备份Backup (贪心+优先队列+双向链表)

    1150: [CTSC2007]数据备份Backup Description 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味 的,因此你想设 ...

  5. PHP:过滤数组中为空的值,并将返回的数组使用数值键,从 0 开始并以 1 递增

    首先了解下以下两个函数: 1.array_filter() 函数用回调函数过滤数组中的值. 2.array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名.(被返回的数组将使 ...

  6. SqlHelper——只因为在人群中多看了你一眼

    对SQLHelper,还是有一点陌生的,但是大多数人都在使用,我就有一种想了解并使用的意愿,于是查了很多资料,发现一片不错的博客,放在下面,作为自己或读者使用的材料. 一.SqlHelper 出场 不 ...

  7. Problem X: 双层金字塔

    #include<stdio.h> int main() { int i,j,n,m; while(scanf("%d",&n)!=EOF) { ;i<= ...

  8. Problem B: 零起点学算法92——元素前移1位

    #include<stdio.h> int main() { ],b[]; while(scanf("%d",&n)!=EOF) { ;i<n;i++) ...

  9. Team Queue(POJ 2259)

    题意:有若干个团体,每个团体有若干个元素,他们按次序来排队,如果队列中已经有同一团体的元素在,则可以插队到它后面,模拟这个过程 思路:用map存下元素与团体的关系,并开2个队列,一个存整体队伍的排列( ...

  10. 大内密探HMM(转)

    源地址:http://blog.csdn.net/ppn029012/article/details/8923501 1. 赌场风云(背景介绍) 最近一个赌场的老板发现生意不畅,于是派出手下去赌场张望 ...