zoukankan      html  css  js  c++  java
  • Linux文本编辑器-vi/vim

      vi是Linux命令行界面下的文字编辑器,vim是vi的增强版(Vi IMproved),完全兼容

      可以理解成普通的txt文本与word文档之间的差距。

      注:还有一款全屏编辑器是nano,可以了解下

    【vim的三种模式】

      普通模式,编辑模式,命令模式

      

      1.普通模式

        使用vim命令打开文件,只能使用上下左右键移动光标,并且操作复制,粘贴,删除等之类的工作

      2.编辑模式

        普通模式下不能对文件内容进行编辑,只有按下“i,I,o,O,a,A,r,R,s,S”,等字母,进入编辑模式之后才可以执行录入文字

        编辑模式有一个插入的标记在屏幕的最下方

      3.命令模式

        在普通模式下,输入“:/  ?”时,光标会自动定位在那一行,此模式中可以执行保存,退出,搜索,替换,显示行号等相关操作

        

     


      vim [OPTION]...FILE...
      如果文件存在,则打开它,如果不存在,则打开一个新的文件,如果存盘则创建文件,不存盘则不创建文件

    【vim打开文件进行快速定位】    

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

     vim +11 /etc/passwd

        -b:二进制方式打开文件
        -d:比较多个文件的差异
        -m:只读打开文件
        ex file 或 vim -e:直接进入ex模式

    【模式转换】

      普通模式 ----> 插入模式
        i:insert,在光标所在处输入
        I:在光标所在行的行首输入
        a:在光标所在处的后一个字符输入
        A:在光标所在行的行尾输入
        o:在当前光标所在行的下一行新开一行 open
        O:在当前光标所在行的上一行新开一行

      字符间跳转:
        h:左
        j:下
        k:上
        l:右 #[hljk]:指定一次跳转多少的字符数

      单词间跳转:
        w:跳到下一个单词的词首
        e:当前或下一个单词的词尾
        b:当前或上一个单词的词首
      #[web]:指定一次跳转多少个单词数
      

      当前页跳转
        H:页首
        M:页中
        L:页底

       翻屏:
        Ctrl+f:向文件尾部翻一屏
        Ctrl+b:向文件首部翻一屏
        Ctrl+d:向文件尾部翻半屏
        Ctrl+u:向文件首部翻半屏

      行首行尾跳转:
        ^:调到行首非第一个非空白字符处
        0:调到行首
        $:跳转至行尾

      行间移动:
        #G:跳到第#行
        G:最后一行   例如:1G或gg:第一行
        

      字符编辑:
        x:删除光标处的字符
        #x:删除光标处起始的#个字符
        xp:交换光标所在处及其后面字符的位置 原理是:先删除光标所在位置,然后使用p粘贴
        ~:转换大小写

      替换命令:
        r:替换个光标所在处的字符 7rv 光标后7为替换成v
        R:切换成replace模式

      删除命令:
        d:删除命令,可结合光标跳转命令实现范围删除
        d$:删除光标至行尾的字符
        d^:删除光标至行首非空白字符处
        d0:删除光标至行首
        dw:删除光标当标至下一个单词的词首
        de:删除光标至当前或下一个单词的词尾
        db:删除光标至上一个单词的词首
        dd:删除光标所在行
        #dd:删除#光标后的#行

      复制命令:
        y:复制
        y$:从光标所在处复制到行尾
        y0:从光标所在处复制到行首
        y^:从光标所在处复制到行首的非空白字符处
        ye:从光标所在处复制至当前或下一个单词的词尾
        yw:从光标所在处复制至下一个单词的词首
        yb:从光标所在处复制至上一个单词的词首
        yy:复制光标所在行
        #yy:复制多行
      

      粘贴命令:
        p:粘贴,如果缓冲区为整行,则粘贴在光标所在行的下一行,否则,粘贴在光标所在处的后面
        P:粘贴,如果缓冲区为整行,则粘贴在光标所在行的上一行,否则,粘贴在光标所在处的前面

      可视化模式:
        v 按字符选定
        V 按航选定,经常结合编辑命令,d,c,y
        撤销此前的编辑
        u(undo)撤销此前的操作
        #u 撤销指定次数的操作
        撤销此前的撤销

    vim中的末行模式:

        按“:”进入末行模式

    (1)地址定界
      :start_pos,end_pos
      #     具体第#行,例如2表示第2行
      #,#     从左侧#表示行起始,到右侧#表示行结束
      #,+#     从左侧#表示行起始,加上右侧#表示的行数
      .       表示当前行
      $       表示最后一行
      %       全文,相当于1,$

      /part1/,/part2/
            从第一次被part1模式匹配到的行开始,一直到第一次被part2匹配到的行结束
        使用方式:
          后跟一个编辑命令
            d
            y
            w /PATH/TO/SOMEWHERE

    :1,20w /tmp/.txt

            r filename:读取文件内容到当前文件中

    :r /etc/fstab

            q:退出
            q!:强制退出
            wq:保存并退出
            wall 保存所有
            x:保存并退出
            ZZ:保存退出
            ZQ:不保存退出
    (2)查找
        /PATTERN 从当前光标所在处尾部查找
        ?PATTERN 从当前光标所在处首部查找
        n 与命令同方向
        N 与命令反方向
    (3)替换
        s 在末行模式下完成查找替换操作
        s/要查找的内容/替换为的内容/修饰符
        替换的内容可以使用反向引用1,2,可以使用&引用前面查找时查到的内容
      

      修饰符号:
        i 忽略大小写
        g 全局替换,默认情况下,每一行只替换第一次出现

    【定制vim的工作特性】

      配置文件:永久有效
      全局 :/etc/vimrc
      个人:~/.vimrc 需要自己创建
      末行:当前vim进程有效

        (1)显示行号:
          set nu 显示;
          set nonu 取消显示;

        (2)括号成对匹配:括号高亮
          set sm:设置;
          set nosm:取消;

        (3)自动缩进:
          set ai
          set noai

        (4)高亮搜索:
          set hlsearch high light search
          set nohlsearch nohls

        (5)语法高亮:
          syntax on
          syntax off

        (6)忽略字符的大小写:
          set ic
          set noic


        (7)文本格式:
          set fileformat=dos :启用windows格式;
          set fileformat=unix:启用unix格式;

        (8)设置文本宽度:
          set textwidth=65 (vim only)
          set wrapmargin=16


        (9)设置tab键的缩进长度:
          set tabstop=4
          set softtabstop=4:设置一个退格键退回来的长度;
          set shiftwidth=#:设置每一级缩进的长度;
          set authindent:表示自动缩进;

          set noautoindent   取消自动缩进,使用方法:在粘贴数据之前使用,然后粘贴文件。如阿云托管k8s集群需要的config文件

          set paste   粘贴文本文件

        (10)帮助信息:
          :help option-list
          :set or :set alal

  • 相关阅读:
    还没解决的问题
    USACO 1.41 The clocks
    USACO Broken Necklace
    hdu 3265 Posters
    USACO1.52 Prime Palindromes
    hdu 3068 && pku 3974 (最长回文串)(Manacher 算法)
    USACO Calf Flac
    USACO Milking Cows
    旧版RTSP协议网页视频无插件直播EasyNVR视频平台为什么无法播放H264编码视频?
    mysql的基本查询
  • 原文地址:https://www.cnblogs.com/flashfish/p/10718708.html
Copyright © 2011-2022 走看看