VI Command learning

VI Command learning

VI是Unix中标准的文本编辑器之一。

VI中命令区分大小写,工作模式分为插入与命令模式,命令模式包括基本命令和ex编辑命令,ex编辑命令一般出现在屏幕下方,由:引出。

VI命令格式:
[命令] (文本)
[命令] (数字)(文本)
(数字)[命令] (文本)

基本命令:i a c d y p u x w q o r s

    • vi [filename] 打开一个指定文件
    • 基本文本处理

      i               在当前光标前插入文本
      I              在行首插入文本
       a            在当前光标后插入文本
      A             在行尾插入文本
      O            在当前行前插入一行
      o            在当前行后插入一行

      x             删除当前光标字符
      xw          删除单词
      x$          删除到行尾
      x0           删除到行首
      5x          删除5个字符

      0  光标移动到当前行第一个字符
      $  光标移动到当前行最后一个字符
      h  光标左移一个空格
      l  光标右移一个空格
      j  光标下移一行
      k  光标上移一行
      w|W  光标前移一个单词
      b|B  光标后移一个单词
      p               粘贴
      移动或复制文本可以通过先删除(dd),然后粘贴(p)的方法实现,如dd删除一行,p粘贴改行,x删除字符,p粘贴字符。

      c | C  修改文本
      cw  修改单词,并插入
      c$  修改到行尾
      c0  修改到行首
      cc  替换当前行

      d |D            删除字符
      dw  删除单词
      d$  删除到行尾
      dd  删除当前行

      r|R  替换当前文本
      S  替换当前行
      s  替换字符
      ~  字母大小写转换

      y | Y           复制文本
      yw  复制单词
      y$  复制到行尾
      y0  复制到行首
      yy  复制一行
      4yy  复制4行

      .  重复操作
      u  撤销上一次操作
      U  撤销改行任何操作
      J  合并当前行与下一行
      参数可以带数字使用,如4h左移4个空格, 50i* 插入50个*

         / | n  向前搜索
         ? | N  向后搜索
         ^F   向前滚一屏
         ^B   向后滚一屏
         ^D   向前滚半屏
         ^U   向后滚半屏
         ^L   刷新屏幕
    •  编辑命令扩展

      vi + [file] 打开文件到最后一行
      vi -r [file] 系统崩溃后恢复文件
      vi +n [file] 打开文件到第n行
      vi +/pattern [file] 打开文件到模式首次出现的地方
      vi -R  以只读模式打开文件
      //1-9  前9次删除操作
      vi编辑器中可以CTRL+Z挂起vi,返回Unix shell状态,进行其他工作,unix shell中的fg 命令可以使当前工作返回第一个挂起的vi窗口
    • ex行编辑器

      vi中,在ex行命令可以用!调用unix系统命令,如!ls, 列出当前目录的所有文件,!df 察看当前硬盘使用情况。
      ex命令由行号和命令组成,以回车键结束。
      :1   到第一行
      :1,3   打印1~3行
      :$   到最后一行
      :shift + G  到最后一行
      :p   恢复缓冲区的内容(如:1p :3p)
      :s/screen/line  替换当前行第一个screen 为 line
      :1,3 s/screen/l 替换1~3行的screen为l
      Q  进入ex编辑命令模式
      vi  返回vi编辑器
      :delete|d 删除
      :copy |co|t copy 并粘贴 copy的内容
      :move [行号]|m move到指定行
      :23,29co100 复制23~29行并把他们粘贴到100行的后面
      :set nu  显示行号
      :=  显示总行号
      :.=  先是当前行行号
    • 行地址符号 
      .  当前行
      $  最后以行
      %  文件每一行(1,$)
      +  向后
      -  向前
      :.+20#  先是从当前行向后20行的行号
    • :g  全局搜索
      :g/pattern 搜索符合模式的行
      :g!/patterhn  搜索不符合模式的行

      :w   保存但不退出.
      :w [newfile]  将当前修改保存到新文件.
      :wq || ZZ 保存退出.
      :e   不保存当前修改,回到初始版本文件.
      :q   退出不保存.
      :x  写文件并推出编辑器
      :1,10w>> [newfile] 使用>>重定向添加符 和w 把内容追加到文件
      :read [file] 读取系统中现有文件数据
      :r [file]
      :0r [file] 将要读取的文件放到当前文件的开始
      :12r [file] 将要读取的文件放到当前文件的12行后

      vi可以打开多个文件,通过ex命令在文件间切换,如vi temp test, 通过:vi temp, :vi test切换到不同文件,:n命令可以调用另一个文件

      :g | :s  全局替换
      /g  在当前行全局替换
      :s/old/new/g 当前行全局替换old字符为new
      :1,$s/old/new/g 全局替换
      :1,50s/old/new/g 替换1~50行
      :gc  确认替换,y 替换
      n  重复搜索
      %s/editer/editor/g == :g/editer/s//editor/g
      grep/sed/awk 正则表达
      .  匹配单字符
      *  匹配其前面的单个字符的0个或多个实例:bugs* == bug | bugs
      *.  匹配任何数量的任何字符
      ^  用于正则表达式的开始
      $
      /  将后面的字符视为普通字符:/* == *
      []  匹配所包含字符的任何一个:p[aeiout]r == par | per....
      :g/^$/d  删除所有空行
      /U  替换字符为大写
      &  重复替换
    •  Advanced vi command

      :set option 设置选项
      :set nooption 关闭选项设置
      :set all 显示所有选项
      :set ic  指定模式搜索忽略大小写
      :set noic 不忽略
      .exrc文件 控制vi环境的exrc文件位于主目录下(首次登陆时所在的目录),可以用vi编辑器修改.exrc文件
      :so sourcefile  可以调用sourcefile中的选项设置
    • 编程选项

      :set autoindent 自动缩进
      CTRL+D  取消一个缩进级别(插入模式)
      CRTL+T  实现另一个缩进级别(插入模式)
      >>  行右移(缺省8空格--实际上将制表符插入到文本中)
      <<  行左移8空格
      5>>  移动该段落中前5行
      :set shiftwidth=4 该选项可以更改缺省缩进的空格数目
      :set tabstop=4 设置tab制表符号的字符数目
      :set list 设置制表符显示为^I,行尾显示为$,通常屏幕中制表符和空白均显示为空白。
      :set showmatch 设置搜索技巧
      tabstop
      shiftwidth
      number
      list
      autowrite 设置后,调用:n(下一个)命令移动到下一个文件编辑时,:! 运行shell命令之前将自动写出已修改的缓冲区内容
      :![command] 执行unix命令
      :!date  显示时间
      :!sort  排序文件
      :ab  单词缩写
      :unab  单词缩写失效
      :map  列出当前映射的所有字符
      :map x sequence 映射x为sequence编辑命令
      :unmap x 取消映射
    • ex特殊键:
      ^  CTRL+V
      ^M  回车
      ^[  ESC
      ^H  Backspace
      ^I  tab
      "...  双引号标记ex注释行,
    • VIM -- Vi Improved

      http://vim.sourceforge.net/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值