• 7 vim编辑及文件查找


    vim编辑器

      文本:纯文本,ASCII text;Unlcode(编码机制)

    文本编辑种类:

      行编辑器:sed

      全屏编辑器:nano,vi

      vi:VIsual Interface

      vim:vi IMproved (vi的增强版)

    vim:模式化的编辑器

        基本模式:

          编辑模式,命令模式

          输入模式(插入模式)

          末行模式:

            内置的命令行接口

      打开文件:

        vim [options] [file ..]

          +#:打开文件后,直接让光标处于第#行的行首

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

          +:表示文件末端

      模式转换:

        编辑模式:默认模式

          编辑模式 --> 输入模式

            i:install,在光标所在处输入

            a:append,在光标所在处后方输入

            o:在光标所在处下方打开一个新行;

            I:在光标所在行的行首输入

            A:在光标所在行的行尾输入

            O:在光标所在处的上方打开一个新行

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

             Esc

          编辑模式 --> 末行模式

             :

          末行模式 --> 编辑模式

             Esc

       关闭文件:

        ZZ:在编辑模式下,保存并退出

        末行模式下:

          :q 退出

          :q!:强制退出,不保存此前的编辑

          :wq  保存并退出

          :x  保存并退出

          :w /PATH/TO/SOMEFILE

        光标跳转:

          字符间跳转

            h:向左

            j:向下

            k:向上

            l:向右

            #command:跳转由#指定的个数字符

          单词间跳转

              w:下一个单词的词首

              e:当前或后一个单词的词尾

              b:当前或前一个单词的词首

              #command:跳转由#指定的个数的单词

          行首行尾跳转

              ^:跳转至行首的第一个非空白字符

              0:跳转至行首(空白字符可以,但是tab键的空白不可以)

              $:跳转至行尾

          行间跳转

              #G:跳转至由#指定的行
              1G,gg:跳转至第一行

              G:跳转至最后一行

          句间跳转

            )

            (

          段间跳转

            }

            {

        翻屏操作:

          Ctrl+f:向文件尾部翻一屏

          Ctrl+b:向文件首部翻一屏

          Ctrl+d:向文件尾部翻半屏

          Ctrl+u:向文件首部翻半屏

          Enter:按行向后翻

          

      vim的编辑命令:

        字符编辑

          x:删除光标所在处的字符

          #x:删除光标所在处起始的#个字符

          xp:交换光标所在处字符与其后面的字符的位置

        替换命令:(replace)

          r :替换光标所在处的字符,按r后,需要后面要跟一个要替换成的字符

        删除命令

          d:删除命令,可结合光标跳转字符,实现范围删除

          d$

          d^

          dw

          de

          db

          #d command

          dd:删除光标所在的一整行

          #dd:删除光标所在处的行起始的共#行

        粘贴命令(p,put,paste)

          P:大写P,缓冲区中的内容如果为整行,则粘贴在当前光标所在行的上方,否则,则粘贴至当前光标所在处的前方

          p:小写p,缓冲区的内容如果为整行,则粘贴在当前光标所在行的下方,否则,则粘贴至当前光标所在处的后方

        复制命令(yank,y):

          y:表示复制,工作行为相似于d命令

          y$

          y^

          y0

          ye

          yw

          yb

          #command

          yy:复制一整行

          #yy:表示复制#行

          

      改变命令(change,c):

        编辑模式 --> 输入模式,实现删除操作:

          c$

          c^

          c0

          cb

          ce

          cw

          #command

          cc:删除光标所在的行,并转换为输入模式

            #cc:

     其他编辑操作:

      可视化模式:

          v:按字符选定

          V:按行选定

          结合编辑命令:d,c,y,p

      撤销操作(undo):

        u:撤销此前的操作

        #u:撤销此前的#个操作

      撤销此前的撤销:

        Ctrl+r

      重复执行前一个编辑操作

        .

    vim自带的练习教程:vimtutor

    vim末行模式:

      内建的命令行接口

      (1)地址定界

          :start_pos[,end_pos]

            #:特定的第#行,例如5即第5行

            .:当前行

            $:最后一行

            #,#:指定行范围,左侧为起始行,右侧为结束行

            #,+#:指定:行范围,左侧为起始行绝对编号,右侧为相对左侧行号的偏移量;例如3,+7

            %:全文

            /pattern/:从光标所在处起始向文件尾部第一次被模式所匹配到的行

              /first/,$

            /pat1/,/pat2/:从光标所在处起始,第一次由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行

            可同编辑命令一同使用,实现编辑操作:

              d

              y

              c

              w /PATH/TO/SOMEFILE:将范围内的文本保存至指定的文件中

              r /PATH/FORM/SOMEFILE:将指定的文件中的文本读取并插入至指定位置

      (2)查找

        /PATTERN:从当前光标所在处向文件尾部能够被当前模式匹配到的所有字符串

        ?PATTERN:从当前光标所在处向文件首部能够被当前模式匹配到的所有字符串

          n:下一个,与命令方向相同

          N:上一个,与命令方向相反

      (3)查找并替换

        s:末行模式的命令;使用格式:

          s/要查找的内容/替换为的内容/修饰符

          要查找的内容:可使用正则表达式

          替换为的内容:不能使用正则表达式,但可以引用

            如果“要查找的内容“部分在模式中使用分组符号:在"替换为的内容"中使用后向引用

            直接引用查找模式匹配到的全部文本,要使用&符号

          修饰符:

            i:忽略大小写

            g:全局替换,意味着一行中如果匹配到多次,则均替换

            可把分隔符替换为其它非常用字符

            s@@@

            s###

            示例:

              %s@<t([[:alpha:]]+)>@T1@g

              %s@<r[[:alpha:]]+>@&er@g

            练习:

              1.复制/etc/grub2.cfg文件至/tmp/目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首的空白字符

                :%s@^[[:space:]]+@@  

              2.复制/etc/rc.d/init.d/functions文件至//tmp目录中,用查找替换命令为/tmp/functions文件中的每个以空白字符开头的行的行首加上#

                :%s@^[[:space:]]+@#&

              3.为/tmp/grub2.cfg文件中的前三行的行首加上#号

                :1,3s@^@#&

              4.将/etc/yum.repos.d/Centos-Base.repo文件中所有的enabled=0替换为enabled=1,所有gpgcheck=0替换为gpgcheck=1

                :%s@(enabled|gpgcheck)=0@1=1@g 

      

      vim的多文件功能

        多文件:

          vim file1 file2 ......

           大文件间切换

            :next 下一个

            :prev 上一个

            :first 第一个

            :last 最后一个

          退出所有文件:

            :wqall 保存所有文件并退出

            :wall

            :qall

      多窗口:

        -o:水平分割窗口

        -O:垂直分割窗口

        在窗口间切换:Ctrl+w

        注意:单个文件也可以分割为多个窗口进行查看

          Ctrl+w,s:水平分割窗口  逗号为松开

          Ctrlw,v:垂直分隔窗口 逗号为松开

      定制vim的工作特性:

        注意:在末行模式下的设定,仅对当前vim进程有效

        永久有效:

          全局:/etc/vimrc

          用户个人:./.vimrc

        1、行号

          显示:set number,简写为 set nu

          取消显示:set  nonumber 简写:set nonu

        2、括号匹配高亮

          匹配:set showmatch,set sm

          取消:set nosm

        3、自动缩进

          启用:set ai

          禁用:set noai

        4、高亮搜索

          启用:set hlsearch

          禁用:set nohisearch

        5、语法高亮

          启用:syntax on

          禁用:syntax off

        6、忽略字符大小写

          启用:set lc

          禁用:set nolc

        获取帮助:

          :help

          :help subject

      课外作业:如何设置tab键缩进4个字符

    bash脚本编程之算数运算

      算数运算格式:

        (1)let  VAR=算数运算表达式

        (2)VAR=$[算数运算表达式]

        (3)VAR=$((算数运算表达式))

        (4)VAR=$(expr $ARG1 $OP $ARG2

         注意:惩罚符号在有些场景中需要使用转义符

      练习:写一个脚本,完成如下功能:

        添加三个用户

        求此三个用户的uid之和

        #!/bin/bash

        useradd test1

        useradd test2

        useradd test3

        a=`id -u test1`

        b=`id -u test2`

        c=`id -u test3`

        echo $(($a+$b+$c))

  • 相关阅读:
    Android的消息机制
    AndroidVolley框架的使用
    Android事件分发机制浅谈(三)源码分析(View篇)
    Java 编程下简介 Class 与类加载
    [ZJOI2007]最大半连通子图
    [HNOI2012]永无乡
    [HEOI2016/TJOI2016]排序
    CSS 条件缩放图片
    CSS图片垂直居中
    最近写 ASP.NET 中出现的错误 & 实现DataTable和DataSet类型的客户端/服务器端自动转换
  • 原文地址:https://www.cnblogs.com/self-discipline-xxc/p/10295354.html
Copyright © 2020-2023  润新知