vim编译器.day20

vim编辑器

  • vim三种模式下的操作

vi ===> vim 文件编辑器
# vim /boot/grub2/grub.cfg
# vim /etc/sysconfig/network-scripts/ifcfg-eth0

命令模式:
    a. 光标定位 
        hjkl  
        0 $ 
        gg G  
        3G      进入第三行 
        /string(n N 可以循环的)  快速定位到某一行  
                  
    b. 文本编辑(少量)
        y       复制  yy 3yy  ygg  yG (以行为单位)
        d       .删除 dd 3dd dgg  dG      (以行为单位) 
        p       粘贴
        x       删除光标所在的字符
        D       从光标处删除到行尾
        u       undo撤销
        ^r      redo重做
         r      可以用来修改一个字符
    
    c. 进入其它模式
        a       进入插入模式
        i       进入插入模式
        o       进入插入模式
        A       进入插入模式
        
        :       进入末行模式
        ^v  进入可视块模式
        R   进入替换模式
        

插入模式:
        ^p  唯一补齐


末行模式:
    a. 保存退出
        :10 进入第10行   
        :w      保存   
        :q      退出    
        :wq     保存并退出      
        :w!     强制保存    
        :q!     不保存并退出       
        :wq!    强制保存退出
        :x      保存并退出
        
    b. 查找替换
        :范围 s/old/new/选项        
        :1,5 s/Note/yyy/                从1-5行的Note 替换为yyy   
        :5,$ s/Note/yyy/                $表示最后一行
        :1,$ s/to/xxx/g     =    :% s/to/xxx/g    %表示全文  g表示全局
        :4,9 s/^#//                         4-9行的以#开头的替换为空
        :% s#/dev/sda#/var/ccc#g
        :,8 s/to/xxx/           从当前行到第8行
        
    c. 读入文件/写文件
        :w
        :w /aaa.txt                         另存为/aaa.txt  
        :1,3 w /2.txt
        :1 w! /root/ccc.txt  如果目标文件已经存在则需要加!号
        :r /etc/hosts

    d. 设置环境     
        临时设置:       
        :set nu                                 设置行号      
        :set ic                                 不区分大小写
        :set ai                             自动缩进
        :set list
        :set nonu                       取消设置行号     
        :set noic

        永久的环境:
        /etc/vimrc                      影响所有系统用户
        ~/.vimrc                    影响某一个用户
        # vim ~/.vimrc  # 在家目录下新增一个文件,输入下述内容
        set ic
        set nu

# vim -O /etc/hosts /etc/grub.conf      ^w 按两次切换
# vimdiff grub.conf /etc/grub.conf      对比文件,^w 按两次切换       
# vim -p /etc/hosts /etc/grub.conf      ^PgUp, ^PgDn


  • 文本处理三剑客

    • sed命令

      流式编辑器,主要擅长对文件的编辑操作,我们可以事先定制好编辑文件的指令,然后让sed自动完成对文件的整体编辑
      
      # 用法
      sed 选项 '定位+命令' 文件路径
      
      # 选项
      -n 取消默认输出
      -r 支持扩展正则元字符(由于尚未学习正则,所以此处暂作了解)
      -i 立即编辑文件
      
      # 定位
      行定位:
          1定位到第一行
          1,3代表从第1行到第3行
          不写定位代表定位所有行
      正则表达式定位:
          /egon/ 包含egon的行
          /^egon/ 以egon开头的行 
          /egon$/以egon结尾的行
      数字+正则表达式定位
          "1,8p"代表打印1到8行,
          "1,/egon/p"则代表取从第1行到首次匹配到/egon/的行
          
      # 命令
      d
      p
      s///g
      命令可以用;号连接多多条,如1d;3d;5d代表删除1,3,5行
      
    • awk命令

    awk主要用于处理有格式的文本,例如/etc/passwd这种
    
    # 用法
    awk 选项 'pattern{action}' 文件路径
    
    # 选项
    -F 指定行分隔符
    
    # 工作流程
    awk -F: '{print $1,$3}' /etc/passwd
    
    1、awk会读取文件的一行内容然后赋值给$0
    2、然后awk会以-F指定的分隔符将该行切分成n段,最多可以达到100段,第一段给$1,第二段给$2,依次次类推
    3、print输出该行的第一段和第三段,逗号代表输出分隔符,默认与-F保持一致
    4、重复步骤1,2,3直到文件内容读完
    
    # 内置变量
    $0 一整行内容
    NR 记录号,等同于行号
    NF 以-F分隔符分隔的段数
    
    # pattern可以是
    /正则/
        /正则/       # 该行内容匹配成功正则
        $1 ~ /正则/  # 第一段内容匹配成功正则
        $1 !~ /正则/  # 第一段内容没有匹配成功正则
    比较运算:
        NR >= 3 && NR <=5  # 3到5行
        $1 == "root"      # 第一段内容等于root
    
    # action可以是
    print $1,$3
    
    • grep命令

    grep擅长过滤内容
    
    # 用法
    grep 选项 '正则' 文件路径
    
    # 选项
    -n, --line-number           在过滤出的每一行前面加上它在文件中的相对行号
    -i, --ignore-case           忽略大小写
    --color                     颜色
    -l, --files-with-matches    如果匹配成功,则只将文件名打印出来,失败则不打印
                                通常-rl一起用,grep -rl 'root' /etc 
    -R, -r, --recursive         递归
    
    # 示例
    [root@localhost ~]# grep '^root' /etc/passwd
    root:x:0:0:root:/root:/bin/bash
                            
    [root@localhost ~]# grep -n 'bash$' /etc/passwd
    1:root:x:0:0:root:/root:/bin/bash
    44:egon:x:1000:1000:egon:/home/egon:/bin/bash
                                
    [root@localhost ~]# grep -rl 'root' /etc    
    
    # grep也支持管道,我们可以发现三剑客命令都支持管道
    [root@localhost ~]# ps aux |grep ssh
    root        968  0.0  0.2 112908  4312 ?        Ss   14:05   0:00 /usr/sbin/sshd -D
    root       1305  0.0  0.3 163604  6096 ?        Ss   14:05   0:00 sshd: root@pts/0
    root       1406  0.0  0.3 163600  6240 ?        Ss   14:05   0:00 sshd: root@pts/1
    root       2308  0.0  0.0 112724   984 pts/1    R+   15:30   0:00 grep --color=auto ssh
    [root@localhost ~]# ps aux |grep [s]sh
    root        968  0.0  0.2 112908  4312 ?        Ss   14:05   0:00 /usr/sbin/sshd -D
    root       1305  0.0  0.3 163604  6096 ?        Ss   14:05   0:00 sshd: root@pts/0
    root       1406  0.0  0.3 163600  6240 ?        Ss   14:05   0:00 sshd: roo
    
posted @ 2021-06-24 19:41  一博女孩  阅读(62)  评论(0)    收藏  举报