Linux文件编辑命令vi详细说明

目录

1、引言

2、vi命令与vim命令

3、vi命令使用        

3.1一般模式 

3.2编辑模式(重点)        

3.3命令行模式                 


1、引言

          相信有很多程序员朋友,在长时间不操作linux系统或者初学linux命令时,都有跟我有一样的疑惑。

          这个vim命令与vi命令有什么区别?不都是编辑器么?          

2、vi命令与vim命令

          其实,很好理解:

          首先来说它们两者的共同点:都是文本编辑器。

          接下来是它们两者的不同点

        【 vi编辑器】:vi是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,

                                它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。

        【 vim编辑器】:vim可以当作vi的升级版本,vim最大的特点是具有程序编辑的能力,可以以字体颜色

                                 辨别语法的正确性,方便程序设计。vim里面加入了很多额外的功能,例如支持正则表

                                 达式的搜索、多文件编辑、块复制等等。

          综上所述:

                 由于vi编辑器对于Unix及Linux系统的任何版本,vi编辑器都是完全相同的,

                 所以,我们只需学会vi编辑器,您将在Linux的世界里畅行无阻。

3、vi命令使用        

          vi基本上可以分为三种模式,分别是一般模式编辑模式命令行模式,各模式的功能区分如下:

          ①、一般模式:

                      当以vi打开一个文件就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用 

                      上下左右按键来移动光标,你可以使用删除字符或删除整行来处理文件内容,也可以使用

                      复制、粘贴来处理你的文件数据。

          ②、编辑模式:

                      在一般模式中可以进行删除、复制、粘贴等的操作,但是却无法编辑文件的内容,只有当到

                      你按下【i, I, o,O, a, A, r, R】等任何一个字母之后才会进入编辑模式。这时候屏幕的左下方

                      会出现【INSERT或 REPLACE】的字样,此时才可以进行编辑。而如果要回到一般模式时,

                      则必须要按下【Esc】即可退出编辑模式。          

          ③、命令行模式:

                      输入【 : / ? 】三个中的任何一个,就可以将光标移动到最底下那一行。在这个模式中,可以

                      提供查找、读取、存盘、替换字符、离开vi、显示行号等的动作则是在此模式中完成的。      

          此为概念的理解以及讲解。下面为命令的讲解。

3.1一般模式 

                 a.移动光标

                           h:控制光标左移一格

                           j :控制光标下移一格

                           k:控制光标上移一格

                           l :控制光标右移一格

                           ctrl+b:屏幕往后移动一页

                           ctrl+f :屏幕往前移动一页

                           ctrl+u:屏幕往后移动半页

                           ctrl+d:屏幕往前移动半页

                           0 :移到文章的开头

                           G:移动到文章的最后

                           $ :移动到光标所在行的行尾

                           ^ :移动到光标所在行的行首

                           w:光标跳到下个字的开头

                           e :光标跳到下个字的字尾

                           b :光标回到上个字的开头

                           #l:光标移到该行的第#个位置,如:5l,56l     

                  b.删除文字

                           x:   每按一次,删除光标所在位置的"后面"一个字符

                           #x: 例如,「6x」表示删除光标所在位置的"后面"6个字符

                           X:  大写X,每按一次,删除光标所在位置的"前面"一个字符

                           #X: 例如,「20X」表示删除光标所在位置的"前面"20个字符

                           dd:  删除光标所在行

                           #dd:从光标所在行开始删除#行

                  c.复制

                           yw:  将光标所在之处到字尾的字符复制到缓冲区中 

                           #yw:复制#个字到缓冲区 yy:复制光标所在行到缓冲区

                           #yy: 例如,「6yy」表示拷贝从光标所在的该行"往下数"6行文字 

                             p:   将缓冲区内的字符贴到光标所在位置;

                                     注意:所有与"y"有关的复制命令都必须与"p"配合才能完成复制与粘贴功能

                  d.替换

                           r :替换光标所在处的字符。

                           R:替换光标所到之处的字符,直到按下「ESC」键为止 

                  e.跳至指定的行

                           ctrl+g:列出光标所在行的行号

                           #G:例如,「15G」,表示移动光标至文章的第15行行首

                  f.更改

                           cw:  更改光标所在处的字到字尾处

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

                  g.恢复上一次操作

                           u:如果您误执行一个命令,可以马上按下「u」,回到上一个操作;

                                 按多次"u"可以执行多次回复

3.2编辑模式(重点)        

                  a.进入编辑模式

                           i : 从目前光标所在处插入

                           I : 在目前所在行的第一个非空格符处开始插入

                           a: 从目前光标所在的下一个字符处开始插入

                           A: 从光标所在行的最后一个字符处开始插入

                           o :在目前光标所在的下一行处插入新的一行

                           O:在目前光标所在处的上一行插入新的一行

                           r : 只会取代光标所在的那一个字符一次

                           R:会一直取代光标所在的文字,直到按下 ESC 为止

                           Esc:退出编辑模式,回到一般模式

3.3命令行模式                 

                  注意:如在编辑模式,需按下【Esc】退出编辑模式,回到一般模式

                  a.进入命令行模式 (指令前带 ":",再敲指令前先敲 ":" )

                           :w : 保存编辑的内容

                           :w! :强制写入该文件,但跟你对该文件的权限有关

                           :q :  离开vi

                           :q! : 不想保存修改强制离开

                           :wq :保存后离开

                           :x :   保存后离开

                           ZZ :若文件没有更动,则不保存离开,若文件已经被更改过,则保存后离开

                           :w filename :将编辑的数据保存成另一个文件(类似另存)

                           :r filename : 在编辑的数据中,读入另一个文件的数据。

                                                 即将【filename】 这个文件的内容加到光标所在行后面

                           :n1,n2 w filename :将n1到n2的内容保存成filename这个文件

                           :! command :暂时离开vi 到命令行模式下执行command的显示结果;

                                                  例如 【:! ls /home】即可在 vi 当中察看/home底下以ls输出的文件信息

                           :set nu :显示行号

                           :set nonu :与 set nu 相反,为取消行

 

                  b.查找(指令前带 ":",再敲指令前先敲 ":" )

                           /xxx: 向光标向下寻找一个名称为xxx的字符串

                           ?xxx:向光标向上寻找一个名称为xxx的字符串

                           n:代表重复前一个查找的动作

                           N:与n刚好相反,为【反向】进行行前一个查找动作

                           :n1,n2s/xxx/yyy/g:n1与n2为数字,在第n1与n2行之间查找xxx这个字符串,

                                                          并将该字符串替换为yyy

                           :1,$s/xxx/yyy/g: 从第一行到最后一行查找xxx字符串,并将该字符串替换为yyy

                           :1,$s/xxx/yyy/gc:从第一行到最后一行查找xxx字符串,并将该字符串替换为yyy,

                                                        且在替换前提示用户确认是否进行替换

你可能感兴趣的:(Linux)