Vi介绍及常用命令

简要介绍:

        由加州大学伯克利分校,Bill Joy 研究开发。
 
        文本 编辑器有很多,比如图形模式的gedit、kwrite、OpenOffice,文本模式下的 编辑器有vi、vim(vi的增强版本)。vi和vim是我们在Linux中最常用的 编辑器。vi或vim是Linux最基本的文本编辑工具,vi或vim虽然没有图形界面 编辑器那样点鼠标的简单操作,但vi编辑器在 系统管理服务器管理字符界面中,永远不是图形界面的编辑器能比的。(注意:vi是unix/linux操作系统中最经典的文本编辑器,只能是编辑字符,不能对字体、段落进行排版;它既可以新建文件,也可以编辑文件;他没有菜单,只有命令,且命令繁多。
虽然vi的操作方式与其他常用的文本编辑器(如gedit)很不相同 ,但是由于其运行于字符界面,并可用于所有unix/linux环境,目前仍被经常使用)。 它的强大不逊色于任何最新的文本编辑器,由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。
        基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

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)。

 

常用命令总结:

UNIX下的编辑器有ex,sed和vi等,其中,使用最为广泛的是vi,而vi命令繁多,以下稍做总结,以资共享!渴望更正和补充!

 

一 vi的操作模式


vi提供两种操作模式:输入模式(insert mode)和指令模式(command mode)。在输入模式下,用户可输入文本资料。在指令模式下,可进行删除、修改等各种编辑动作。

在输入模式下,按Esc键切换到指令模式下。
在指令模式下,按输入指令(i、a、o等)进入输入模式。


二 进入vi

$ vi  filename

直接键入“vi + 所要编辑的文件名”,即可对指定的文件进行编辑。
如果指定的文件为新文件,则提示:“New file”,否则显示该文件的当前内容。

$ view filename

以只读方式打开文件filename

三 指令模式


3.1 进入输入模式

 

 a     在当前游标之后输入
 
A     在当前行之末输入
  i     在当前游标之前输入
  I     在当前行之首输入
 o     在当前行之下新增一行,并在新增行输入
 O     在当前行之上新增一行,并在新增行输入
输入结束后,按Esc键退出输入模式。


3.2 游标移动

 

 h 向左移动一个字元
 
l 向右移动一个字元
 j 向下移动一个字元
 k 向上移动一个字元
 b 左移一个单词,至词首
 w 右移一个单词,至词尾
 0  移到当前行行首
 $ 移到当前行行尾
 + 移至下一行的行首
 - 移至上一行的行首
 H 移至视窗的第一行
 M 移至视窗的中间一行
 L 移至视窗的最后一行
 G 移至该文件的最后一行
 nG 移至该文档的第n行
 n+ 下移n行
 n- 上移n行

 

3.3视窗移动

 

 *<Ctrl> + f 视窗下卷一页
 
*<Ctrl> + b 视窗上卷一页
   <Ctrl> + d 视窗下卷半页
 <Ctrl> + u 视窗上卷半页
 * <Ctrl> + e 视窗下卷一行
 * <Ctrl> + y 视窗上卷一行

 

3.4删除操作

 

 x 删除游标所在字元
 
X 删除游标前一字元
 dw 从游标当前位置开始向后删除一个单词
 db 从游标当前位置开始向前删除一个单词
 d0 从行首删除至当前游标位置
 d$ 从游标当前位置删除至行尾
 dd 删除游标所在行
 D 同d$

 

3.5修改操作

 

 s 修改游标所在字元,修改完成后按Esc键结束
 S 修改整行内容,修改完成后按Esc键结束
 r 替换当前游标所在字元
 R 进入替换状态,直至按Esc键结束
 cw 修改一个单词(从游标位置至词尾)
 cb 修改一个单词(从词首至游标位置)
 cc 修改整行内容,完成后按Esc键结束,同S
 c0 修改行首至游标位置的内容
 c$ 修改游标位置至行尾的内容
 ~ 游标所在字元大小写切换

 

3.6指令重复


在指令模式中,可在指令前面加入一个数字n,则该指令会重复执行n次。常用的重复操作有:

 nx 删除n个字元
 ndd 删除n行
 ns 修改n个字元

 

3.7取消前一动作(Undo)

 

 u 撤消上一指令的结果

 

3.8查找字符串

 

 /字符串 从当前游标向后查找该字符串
 
?字符串 从当前游标向前查找该字符串
 n 从当前游标向后查找下一个字符串
 N 从当前游标向前查找下一个字符串

 

3.9查看编辑状况

 

 <Ctrl> + g 显示正在编辑的文件名、当前游标所在行数、文件总行数、文件是否被修改


四 保存与退出

 :w 保存,但不退出
 
:wq 保存并退出
 :x 同:wq
 :q 退出,如果当前文件没有保存,禁止退出
 :q! 不保存退出
 :w file1 将内容保存至文件file1中,注意:此时编辑的仍为原文件
 :w! file1 将内容覆盖保存至文件file1中,如文件file1存在,:w file1将禁止执行

 

五 环境设置

 

 :set 显示已设置的环境状况
 
:set all 显示所有的环境设置选项
 :set nu 显示行号
 :set nonu 不显示行号
 :set ts = n 设置Tab键的长度为n

 

六 执行指令


以下用具体的数字为例进行介绍,数字表示行数,游标所在行可用“.”代替,文件最后一行可用“$”代替。

 : 10 , 20d 删除第10行至第20行的内容
 :10d 删除第10行的内容
 :%d 删除全部内容
 : 10 , 20co30 将第10行至第20行的内容复制到第30行之后
 : 10 , 20mo30 将第10行至第20行的内容移动到第30行之后
 : 1 , $s/old/new 将第1行至最后一行中的old替换成new
 : 1 , $s/^/new 将第1行至最后一行的内容前面插入new
 : 10  将游标移至第10行


七 切换到shell状态

 :sh 切换到shell状态,exit返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值