2017-12-19Linux基础知识(18)vi编辑器

我们在上一节当中讲述了正则表达式(BRE, ERE),它们两个的正则表达式元字符书写方式有些不同,以及我们也讲述了grep和egrep和fgrep之间的关系也知道了如何使用,它是根据用户所指定的"PATTERN"来对文本进行逐行匹配进行过滤,将匹配到的行进行输出,之后我们也介绍了其文本查看处理工具,例如:wc、cut、sort、uniq、diff、patch。那么在这一章当中我们来讲述一下vim编辑器。

一、文本编辑器

vi编辑器是一款纯文本编辑器,所谓的纯文本也就是没有任何的修饰的文本信息,和我们的网页以及办公软件不同的是,后者是有文本标记语言的,例如.html和.xml可以进行修饰,能够更改字体大小、添加下划线以及更改字体的颜色等,这样能够在确保在下次打开之前还能够保留这样的格式。
  而纯文本的编辑器没有标记语言这一说,就是单纯的保留字符信息,即使字体大小更改也是用一种特殊的方式,其选中某个字段更改字体大小也更改的全部字段(例如:Windows记事本)。

1.1 文本编辑器种类

在Linux当中,文本编辑器的种类一共有两种,一种是行编辑器,另一种是全屏编辑器,在行编辑器中的代表为sed;而在全屏编辑器中,一个是nano,另一个就是vi了,而vi的意思为(Vistual Interface)称之为可视化接口,还有一个是vi的增强版,我们称之为vim(VI IMproved)。

二、vim编辑器

如果不加说明的话,在这里vi/vim是通用的,vim是一款模式化的编辑器,每种模式的功能是不尽相同的,一般来说,它的基本常用模式有以下几种:

   编辑模式, 命令模式(复制、删除等); 
   输入模式:在原有的文本基础上编辑该文本以及修改输入;
      末行模式:
         内置的命令行接口;

2.1 打开文件

vim编辑器和之前nano的打开方式相同,如果在本地或指定的路径没有文件时,会自动创建此文件,并将编辑好之后信息保留在此文件中,其基本用法如下:

   # vim [OPTIONS] [FILE...]

当打开某个文件后,光标默认在最左上角的第一行中的第一列当中,我们可以通过某个选项来可以对光标进行指定,用来定位让光标处于哪一行的行首,选项如下:

   +#:打开文件后,直接让光标处于第#行的行首;
   +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首位置;

那么打开文件之后,就默认处于编辑模式,我们如果想要修改该文件时,就要从编辑模式转换到输入模式,有以下几种方式可提供选择:

   编辑模式:默认模式
    编辑模式 --> 输入模式:
        i:insert, 在光标所在处输入;
        a:append, 在光标所在处的后方输入;
        o:在光标所在处的下方插入一个新行;
        I:在光标所在行的行首输入;
        A:在光标所在行的行尾输入;
        O:在光标所在处的上方打开一个新行;

那么从输入模式回到编辑模式时,使用ESC键就可以回到编辑模式。

   输入模式 --> 编辑模式
     ESC

当我们从编辑模式转换为末行模式时,要使用":"来进行转换。

   编辑模式 --> 末行模式
     :   (这是个内置命令行接口)

从末行模式中要是回到编辑模式的话,也要使用ESC键来进行转换;如果末行模式有命令的话,需连按两次ESC键。

   末行模式 --> 编辑模式
     ESC

2.2 关闭文件

当我们了解完以上几种模式的时候,那么现在了解一下如何关闭文件,在编辑模式下使用快捷键ZZ就能够保存并退出,也可以在末行模式下退出,那么在末行模式下退出的方法有很多种。

   :q  退出;
   :q! 强制退出;
   :wq 保存并退出;
    :w  :q
   :x  保存并退出;
   :w /PATH/TO/SOMEFILE    可理解另存为

2.3 光标跳转

光标跳转实际上可以理解为man手册的翻页,或者为单词之间的跳转等,根据跳转范围,我们大致能分为以下几种:

   光标跳转:
    
    字符间跳转:
        h:左
        j:下
        k:上
        l:右
        
        # COMMAND:跳转由#指定个数的字符;
        
    单词间跳转:
        w:下一个单词的词首;
        e:当前或后一个单词的词尾;
        b:当前或前一个单词的词首;
        
        # COMAND:跳转由#指定个数的单词;
        
    行首行尾跳转:
        ^:跳转至行首的第一个非空白字符;
        0:跳转至行首;
        $:跳转至行尾;
        
    行间跳转:
        #G:跳转至由#指定的行;
        1G, gg:跳转至第一行;
        G:最后一行;
        
    句间跳转:
        )
        (
        
    段间跳转:
        }
        {

2.4 翻屏

我们在man命令中,如果要翻到下一屏,要使用f键,向上翻一屏要使用b键,但在vim中翻屏操作要比man命令有所区别:

   翻屏:
    Ctrl+f:向文件尾部翻一屏;
    Ctrl+b:向文件首部翻一屏;
    Ctrl+d:向文件尾部翻半屏;
    Ctrl+u:向文件首部翻半屏;
    Enter:按行向后翻;

三、vim的编辑命令

用vim的编辑命令,我们可以对该文件进行大规模的操作,通常编辑命令包含以下编辑操作:

   字符编辑:
    x:删除光标所在处的字符;
    #x:删除光标所在处起始的#个字符;
    
    xp:交换光标所在处的字符与其后面的字符位置
    
   替换命令(replace):
    r:替换光标所在处的字符;
        rCHAR
        
   删除命令:
    d:删除命令,可结合光标跳转字符,实现范围删除;
        d$:删除从当前字符到行尾的内容;
        d^:删除从当前字符到行首的内容;
        dw:删除从当前字符到下一个单词的词首;
        de:删除从当前字符到下一个单词的次卫;
        db:当前或前一个单词的词首;
            # COMMAND
        dd:删除光标当前所在的行;
            #dd:删除光标所在处的行起始共#行;
            
   粘贴命令(p, put, patse):
    p:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的下方;否则,则粘贴至当前光标所在处的后方;
    P:缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方;否则,则粘贴至当前光标所在处的前方;
    
   复制(yank,y):
    y:复制,工作行为相似于d命令;
    y^:
    y0:
    
    ye:
    yw:
    ya:
        #COMMAND
    
    yy:复制一整行
        #yy:复制#行;

3.1 改变命令

改变命令功能是能从编辑模式转换为输入模式,因为改变什么是需要用户的介入,其次它也能实现删除的操作。

   改变命令(change, c)
    编辑模式 --> 输入模式,实现删除操作;
        c$
        c^
        c0
        
        cb
        ce
        cw
            #COMMAND
            
        cc:删除光标所在的行,并转换为输出模式;
            #cc:

四、其它编辑操作

以上就是对行进行操作,在windows中,点击鼠标左键我们就能划过某个字段来进行编辑操作,在vim编辑器中也可以实现,我们可以称之为可视化模式。

   可视化模式:
    v:按字符选定;
    V:按行选定;
    
    结合编辑命令使用:d, c, y

接下来是撤销操作,如果说在文件中我们编辑错误或者删除错误时,可以进行撤销操作来进行还原,需要注意的是,如果进行了保存并退出的话,则撤销不回原点。

   撤销(undo)操作:
    u:撤销此前的操作;
        #u:撤销此前的#个操作

如果撤销错误的话,我们可以撤销此前撤销的操作,也可以称作为向前还原。

   撤销此前的撤销操作:
    Ctrl+r

如果某一个操作能够执行多次,也可以重复执行前一个编辑操作:

   重复执行前一个编辑操作:
    .

如果还想学习更多关于vim的其它操作,在Linux中自带有vim教程,该教程的命令为:vimtutor

时间: 2024-10-10 20:03:25

2017-12-19Linux基础知识(18)vi编辑器的相关文章

linux基础知识之vi编辑器的使用

在介绍vi编辑器之前,我们先了解一下Linux系统中别名的使用(文章知识书写来自博主虫师,感谢博主) 别名就是不同的两个名字指的是一个人,不同的两个命令具有相同的作用. 现在,你一定很想知道自己的系统中都有哪些别名. [[email protected] ~]# alias             查询系统中的别名 alias cp='cp -i' alias l.='ls -d .* --color=tty' alias ll='ls -l --color=tty' alias ls='ls

Python编程中常用的12种基础知识总结

原地址:http://blog.jobbole.com/48541/ Python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进制转换,Python调用系统命令或者脚本,Python 读写文件. 1.正则表达式替换目标: 将字符串line中的 overview.gif 替换成其他字符串 1 2 3 4 5 6 7 8 9 10 11 >>> lin

Python 编程中常用的 12 种基础知识总结

Python 编程中常用的 12 种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序.去重,字典排序,字典.列表.字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进制转换,Python调用系统命令或者脚本,Python 读写文件. 1.正则表达式替换 目标:将字符串line中的 overview.gif 替换成其他字符串 >>> line = '<IMG ALIGN="middle" SRC=\'#\'" /s

Linux基础知识03——vim编辑器

所有的类似于Unix的操作系统都内置了vi文书编辑器,vi文书编辑器的升级版vim目前使用较多,功能很强大,具有程序编辑的能力以及可以根据颜色辨别语法的正确性,性能更好. 命令: 终端下创建一个txt文件:vi tt.txt   ,点击i进行编辑,然后输入:wq,就保存退出了. 一般模式下: vi tt.txt进入vim编辑 输入yy命令:复制光标当前所在行,如果想复制多行,y数字y,数字指的是复制从当前行开始复制几行,y2y代表复制从当前行和下一行两行内容 p:粘贴复制的内容到当前光标下一行

javascript基础知识(18) 类型转换

JavaScript 类型转换 Number() 转换为数字, String() 转换为字符串, Boolean() 转化为布尔值. JavaScript 数据类型 在 JavaScript 中有 5 种不同的数据类型: string number boolean object function 3 种对象类型: Object Date Array 2 个不包含任何值的数据类型: null undefined typeof 操作符 你可以使用 typeof 操作符来查看 JavaScript 变

21.云计算&amp;大数据_linux基础知识(18)什么是linux_Linux 命令与文件的搜寻

which (寻找『运行档』) [[email protected] ~]# which [-a] command 选项或参数: -a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称 范例一:分别用root与一般帐号搜寻 ifconfig 这个命令的完整档名 [[email protected] ~]# which ifconfig /sbin/ifconfig <==用 root 可以找到正确的运行档名喔! [[email protected] ~]# su -

20.云计算&amp;大数据_linux基础知识(18)什么是linux_Linux 内容查询

如果我们要查阅一个文件的内容时,该如何是好呢?这里有相当多有趣的命令可以来分享一下: 最常使用的显示文件内容的命令可以说是 cat 与 more 及 less 了!此外,如果我们要查看一个很大型的文件 (好几百MB时),但是我们只需要后端的几行字而已,那么该如何是好?呵呵!用 tail 呀,此外, tac 这个命令也可以达到!好了,说说各个命令的用途吧! cat  由第一行开始显示文件内容 tac  从最后一行开始显示,可以看出 tac 是 cat 的倒著写! nl   显示的时候,顺道输出行号

vi编辑器的使用(1)

Linux 系统下的文本编辑器有很多种,包括图形模式下的gedit.kwrite等,文本模式下的vi.vim(vi的增强版本).emacs等.其中vi和emacs是Linux系统中最常用的两个编辑器.本节主要介绍vi编辑器,主要内容包括: vi编辑器的基本使用,包括vi的启动与退出.工作模式的切换.光标的移动.屏幕的滚动.文本的插入与删除.复制与粘帖.查找与替换等. vi编辑器之程序编辑,包括程序设计中光标的跳转.关键字的补全,以及代码的缩进等. 希望通过本节的学习,能够基本掌握vi编辑器的使用

iOS开发基础知识--碎片12

iOS开发基础知识--碎片12 1:Delegate运用 .h #import <UIKit/UIKit.h> @protocol FilterHeaderViewDelegate <NSObject> @required -(void)filterHeaderViewMoreBtnClicked:(id)sender; @end extern float CYLFilterHeaderViewHeigt; @interface FilterHeaderView : UIColle