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

设为只读

最新文章

  1. oracle--函数--bai
  2. 使用静态函数impl模式做接口
  3. PAT - 测试 01-复杂度2 Maximum Subsequence Sum (25分)
  4. css 去除 a,checkbox 框 出现虚线
  5. 【转】Eclipse去除js(JavaScript)验证错误
  6. android 客户端 和 新浪微博如何打通的
  7. PHP 导出 Excell
  8. [笔记]FTRL与Online Optimization
  9. Raspberry树莓派学习笔记1—基本介绍
  10. Express 学习笔记纯干货(Routing、Middleware、托管静态文件、view engine 等等)
  11. #define和typedef在windows上的应用
  12. python之socket编程------粘包
  13. CCSpriteBatchNode中存放元素的一点理解
  14. loj548 「LibreOJ β Round #7」某少女附中的体育课
  15. node.js总结
  16. 【Spark-core学习之四】 Spark任务提交
  17. 继承之es5对比es6
  18. android --------学习流程图
  19. leetcode-algorithms-18 4Sum
  20. linux下给PHP安装拓展

热门文章

  1. ZSTU OJ 4273 玩具
  2. Protocol Buffers 在前端项目中的使用
  3. 从Windows复制文件到Linux显示乱码问题
  4. 设计模式-外观模式(Facade Pattern)
  5. IN 运算符
  6. Linux基础系列-系统密码破解
  7. mtk预装apk 方案公司内置预装apk
  8. hdu 1529 Cashier Employment(差分约束)
  9. 【推导】Gym - 101243A - Fried Fish
  10. python获取函数名