Linux编辑工具vi命令

vi 打开文件

  • vi 文件名 :打开或编辑文件

  • vi 文件名 +行 :打开文件并把光标定位到指定行(vi 文件名 + :光标定位到文件末尾)

  • vi异常退出,vi打开后输入d删除交换文件

  • vi的三种工作模式

    • 命令模式

      • 打开文件就进入命令模式
      • 通过命令对文件进行常规的编辑操作,例如:定位、翻页、复制、黏贴、删除...
      • 在其他图形编辑器下,通过快捷键或者鼠标实现操作,都在命令模式下实现
    • 末行模式——执行保存、退出等操作

      • 要退出vi返回到控制台,需要在末行模式下输入命令
      • 末行模式是vi的出口
      w    write         保存
      q    quit          退出,如果没有保存,不允许退出
      q!   quit          强行退出,不保存退出
      wq   write&quit    保存并退出
      x                  保存并退出
      
    • 编辑模式——正常的编辑文字

  • 模式切换

    • vi打开文件:命令模式
      • i(insert):进入到编辑模式
      • ESC:返回命令模式
      • :(冒号):进入末行模式
      • ESC:返回命令模式
      • wq(write&quit):保存并返回控制台

命令线路图

重复次数
  • 在命令模式下,先输入一个数字,再跟上一个命令,可以让该命令重复执行指定次数
移动和选择(多练)
vi之所以快,关键在于能够快速定位到要编辑的代码行
  • 移动命令能够和编辑操作命令组合使用
    • 左:h、下:j、上l:k、右:l
    • 行内移动
       命令    英文      功能
       w       word      向后移动一个单词
       b       back      向前移动一个单词
       0                 行首
       ^                 行首,第一个不是空白字符的位置
       $                 行尾
      
    • 行数移动
      命令    英文       功能
      gg      go        文件顶部
      G       go        文件尾部
      数字gg  go        移动到数字对应的行数
      数字G   go        移动到数字对应的行数
      :数字
      
    • 屏幕移动
        命令        英文       功能
      Ctrl + b      back       向上翻页
      Ctrl + f      forward    向下翻页
        H           Head       屏幕顶部
        M           Middle     屏幕中间
        L           Low        屏幕底部
      
  • 移动(程序)
    • 段落移动
      vi中使用空行来区分段落
      在程序开发时,通常一段功能相关的代码会写在一起——之间没有空行
          命令      功能
          {         上一段
           }        下一段
      
    • 括号切换
      在程序中,()、[]、{ }使用的频率很高,而且都是成对出现(在括号间按%,可以移动到括号的首/尾)
          命令       功能
           %         括号匹配及切换
      
    • 标记
      在开发时,莫一块代码可能需要稍后处理,例如:编辑、查看
      此时先使用m增加一个标记,这样可以在需要时快速滴跳转回来或者执行其他编辑操作
      标记名称可以是a~z或者A~Z之间的任意一个字母
      增加了标记的行如果被删除,标记同时被删除
      如果在其他行添加了相同名称的标记,之前添加的标记也会被替换掉
          命令       英文           功能
          mx         mark           添加标记x,x是a-z或者A-Z之间的任意一个字母
          'x                        直接定位到标记x所在的位置
      
  • 选中文本(可视模式)
    学习“复制”命令前,应该先学会怎么样选中要复制的代码
    在vi中要选择文本,需要先使用Visual命令切换到可视模式
    vi中提供了三种可视模式,可以方便程序员选择选中文本的方式
    按ESC可以放弃选中,返回到命令模式
        命令        模式          功能
          v         可视模式      从光标位置开始按照正常模式选择文本
          V         可视行模式    选中光标经过的完整行
        Ctrl + v    可视块模式    垂直方向选中文本
    
        可视模式下,可以和移动命令连用,例如:ggVG能够选中所用内容
    
编辑操作
  • 删除、复制、粘贴、替换、缩排
    • 删除文本
      如果使用可视模式已经选中了一段文本,那么无论使用d还是x,都可以删除选中文本
      命令           英文           功能
      x              cut            删除光标所在字符,或者选中文字
      d(移动命令)    delete         删除移动命令对应的内容
      dd             delete         删除光标所在行,可以ndd删除多行
      D              delete         删除至行尾
      删除命令和移动命令组合示例
      dw         #从光标位置删除到单词末尾
      d0         #从光标位置删除到一行的起始位置
      d}         #从光标位置删除到段落结尾
      ndd        #从光标位置向下连续删除n行
      d代码行G   #从光标所在的行删除到指定代码行之间的所有代码
      d'a        #从光标所在的行删除到标记a之间的所有代码
      
    • 复制,粘贴
      命令           英文         功能
      y(移动命令)    copy         复制
      yy             copy         复制一行,可以nyy复制多行
      p              paste        粘贴
      
      ps:命令d、x类似于图形界面的剪切操作 Ctrl + x
         命令y类似于图形界面的复制操作 Ctrl + c
         命令p类似于图形界面的粘贴操作 Ctrl + v
         vi中的文本缓冲区同样只有一个,如果后续做过复制、剪切操作,之前缓冲区中的内容会被替换
         vi中的文本缓冲区和系统的剪贴板不是同一个
         所以在其他软件中使用Ctrl + c复制的内容,不能在vi中通过p命令粘贴
         可以在编辑模式下使用鼠标右键粘贴
      
    • 替换
      替换命令的作用就是不进入编辑模式,对文件进行轻量级的修改
      命令           英文         功能                       工作模式
      r              replace      替换当前字符               命令模式
      R              replace      替换当前行光标后的字符     替换模式
      R命令可以进入替换模式,替换完成后,按下Esc可以回到命令模式
      
    • 缩排和重复执行
      命令    功能
      >>      向右增加缩进
      <<      向左减少缩进
      .       重复上次命令
      
      缩排命令在开发程序时,统一增加代码的缩进比较有用
      一次性在选中代码前增加4个空格,就叫做增加缩进
      一次性在选中代码前删除4个空格,就叫做减少缩进
      在可视模式下,缩排命令只需要一个>或者<
      在程序中,缩进通常用来表示代码的归属关系
      前面空格越少,代码的级别越高
      前面空格越多,代码的级别越低
      
撤销和恢复
  • 撤销和恢复撤销
        命令       英文           功能
        u          undo           撤销上次命令
        Ctrl + r   redo           恢复上次撤销命令
    
查找替换
  • 常规查找
    命令    功能
    /str    查找str
        n:向下查找
        N:向上查找
        如果看不到高亮就是文件不存在查找内容
    
  • 单词快速匹配
    命令    功能
    *       向下查找当前光标所在单词
    #       向上查找当前光标所在单词
    
  • 查找并替换
    • 在vi中查找和替换命了需要在末行模式下执行
    • 命令格式(:%s///g)
      1)全局替换
          一次性替换文件中的所有旧文本
          :%s/旧文本/新文本/g
      2)可视区域替换
          选中要替换文字的范围
          :s/旧文本/新文本/g
      3)确认替换
          如果把末尾的g改成gc在替换的时候会有提示!(推荐使用)
          :s%/旧文本/新文本/gc
          y - yes 替换
          n - no  不替换
          a - all  替换所有
          q - quit  退出替换
          l - last  最后一个,并把光标移动到行首
          ^E  向下滚屏
          ^Y  向上滚屏
      
编辑
  • 插入命令
    命令       英文           功能                        常用
    i          insert         在当前字符前插入文本        常用
    I          insert         在行首插入文本             较常用
    a          append         在当前字符后添加文本
    A          append         在末行添加文本             较常用
    o                         在当前行后面插入一空行      常用
    O                         在当前行前面插入一空行      常用
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值