vi的三种模式

2017-01-12 14:31

vi 三种模式

vi的三种模式为命令模式,编辑模式,尾行模式

命令模式

命令模式(默认),按下esc即可,可以执行移动光标,删除等操作

  • 光标移动
    • 字符级
      • 左(h)  
      • 下(j)  
      • 上(k)  
      • 右(l)
    • 单词级
      • w word移动到下个单词首字母
      • b before上个单词首字母
      • e end下个单词结尾
    • 行级
      • 0 行首
      • $ 行尾
    • 段落级
      • { 上
      • }下
    • 屏幕级
      • H屏首  
      • L屏尾
    • 文档级
      • G 文档尾部
      • nG 文档第n行
      • gg 文档第一行
      • crtl+f <--> pagedown向下翻页
      • crtl+b <--> pageup向上翻页
      • n+enter 向下移动n行
    • 内容删除
      • dd  //删除当前行
      • ndd  //自当前行向下删除n行
      • x  //删除当前字符
      • cw  //删除光标所在字母后面的字符
    • 内容复制
      • yy  //复制光标当前行
      • nyy  //自当前行复制n行
      • p  //对(删除)复制的内容进行粘贴
    • 相关快捷操作
      • u  //撤销
      • .  //重复上次操作

编辑模式

输入a,i,o,s都可以从命令模式进入到编辑模式,编辑模式可以输入任意内容.若想回到命令模式下,按"ESC"键即可

  • a 光标向后移动一位
  • i 当前位置
  • o 另起新行
  • s 删除光标所在字符
  • r 替换光标所在字符

尾行模式

用于保存内容、查找替换、设置行号等等功能性操作。比如在编辑模式下输入好内容后,需要保存,此时按"ESC"回到命令模式,然后按下":"进入到尾行模式

  • :q   //quit退出vi编辑器
  • :w   //write保存修改的内容
  • :wq  //保存并退出
  • :q!  //强制退出,当对文本内容作了修改而不想要保存时
  • :w!  //强制保存,当没有文本的写权限时
  • :set number  或  :set nu  //显示行号
  • :set nonumber  或  :set nonu  //取消显示行号
  • :n  //跳转到第n行
  • :/内容/  或  /内容  //查找指定内容  
  • :s/targetContent/newContent  //替换当前行第一个targetContent为newContent
  • :s/targetContent/newContent/g  //整行相应内容替换
  • :%s/targetContent/newContent <==> :1,$s/word1/word2/g //整个文本相应内容替换
  • :n1,n2s/word1/word2/gc  <==> //:100,200s/word1/word2/gc 把100行到200行之间的word1替换为word2,并提示是否替换 c->confirm

更多详细资料可以看看这篇文章