zoukankan      html  css  js  c++  java
  • vim 常用命令

    vim有4个模式:命令模式、插入模式、底行模式、可视模式。
    光标移动:
    gg:是让光标移到首行,在vim才有效,vi中无效
    G :光标移到最后一行
    H左、J下、K上、L右 或者 方向键进行选中

    各模式下的常用操作:
    命令模式(command mode):可以移动光标、删除字符等。
    插入模式(insert mode):在此模式下进行文件编辑、修改、输入等操作。
    末行模式(last line mode):可以保存文件、退出vi、设置vi、查找等功能
    可视模式(visual mode):在此模式下可选中进行复制、删除、剪切等操作

    如何进入各模式

    命令模式:vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外三种模式,同时无论在任何模式下只要按一下
    [Esc]键都可以返回命令模式。
    输入模式:在命令模式下按'i'可进入输入模式。
    末行模式:在命令模式输入':'即可进入该模式。
    可视模式:在命令模式下,有三种方式进入该模式
        1)小v进入visual模式,任意选中
        2)大V进入visual line模式,行为单位选中
        3)ctrl+v进入visual block模式,可以根据列进行选中,d剪切、y复制、p粘贴

    命令模式下的操作:
    1)删除操作
      x:删除光标处的单个字符
      dd;删除光标所在行
      dw:删除当前字符到单词尾包括空格的所有字符
      #x:3x删除光标处向右的三个字符
      #dd:3dd从当前行开始向下删除三行文本
      ggdG:删除所有内容。
      dgg:从开始位置删除到光标所占行。
      dG:删除光标所在行到结尾。

    2)撤销操作
      u命令取消最近一次的操作,可以使用多次来恢复原有的操作
      U取消所有操作
      Ctrl+R可以恢复对使用u命令的操作

    3)复制操作
      yy命令复制当前整行的内容到vi缓冲区
      yw复制当前光标所在位置到单词尾字符的内容到vi缓存区,相当于复制一个单词
      y$复制光标所在位置到行尾内容到缓存区
      y^复制光标所在位置到行首内容到缓存区
      #yy例如:5yy就是复制5行
      #yw例如:2yw就是复制两个单词

    4)粘贴
      p小:将已复制的数据在光标下一行粘贴上
      P大:则为贴在光标的上一行

    5)查找
      /pattern:回车,从光标位置开始向下查找
      n继续向下查找,N向上查找
      ?pattern:回车,从光标位置开始想上查找
      n继续向上查找,N向下查找

      pattern是需要匹配的字符串,例如:
      /hello<Enter> #查找hello
      /hello<Enter> #查找hello单词(注意前后的空格)
      除此之外,pattern还可以使用一些特殊字符,包括(/、^、$、*、.),其中前三个这两个是vi与vim通用的,“/”为转义字符。
      /^hello<Enter> #查找以hello开始的行
      /hello$<Enter> #查找以hello结束的行
      //^hello<Enter> #查找^hello字符串

    底行模式下的操作

    1)退出
    【:w】保存不退出
    【:q】不保存退出
    【:wq】保存退出
    【:x】保存退出
    【:q!】不保存强制退出
    【:wq!】保存强制退出

    2)显示行号,取消行号
    :set nu
    :set nonu

    3)查看编码
    :set fileencoding

    4)替换
    :[range]s/pattern/string/[c,e,g,i]
    range 指的是范围,1,7 指从第一行至第七行,1,$ 指从第一行至最后一行,也就是整篇文章,也可以 % 代表。 % 是目前编辑的文章,# 是前一次编辑的文章。
    pattern 就是要被替换掉的字串,可以用 regexp 来表示。
    string 将 pattern 由 string 所取代。
    c confirm,每次替换前会询问。
    e 不显示 error。
    g globe,不询问,整行替换。
    i ignore 不分大小写。
    I ignore 大小写敏感。

    示例
    :s/oldstr/newstr/ #替换当前行第一个为oldstr为newstr
    :s/oldstr/newstr/g #替换当前行所有oldstr为newstr
    :n,$s/oldstr/newstr/ #替换第 n 行开始到最后一行中每一行的第一个oldstr为newstr
    :n,$s/oldstr/newstr/g #替换第 n 行开始到最后一行中每一行所有oldstr为newstr
    #(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
    :%s/oldstr/newstr/ #(等同于 :g/lantian/s//sky/)替换每一行的第一个oldstr为newstr
    :%s/oldstr/newstr/g #(等同于 :g/lantian/s//sky/g) 替换每一行中所有oldstr为newstr

    :s#lantian/#sky/# 替换当前行第一个oldstr/为newstr/,可以使用 #或+ 作为分隔符,此时中间出现的 / 不会作为分隔符
    :%s+/oradata/apras/+/user01/apras1+ (使用+ 来 替换 / ): /oradata/apras/替换成/user01/apras1/

    恢复文件
    vi在编辑某一个文件时,会生成一个临时文件,这个文件以 . 开头并以 .swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,
    该文件不会删除,我们在下次编辑时可以选择一下命令处理:
      O只读打开,不改变文件内容
      E继续编辑文件,不恢复.swp文件保存的内容
      R将恢复上次编辑以后未保存文件内容
      Q退出vi
      D删除.swp文件
      或者使用vi -r 文件名来恢复未保存的内容

    相关文档:

    https://www.cnblogs.com/luosongchao/p/3193153.html

    https://www.cnblogs.com/logsharing/articles/8182850.html

    —转载请注明出处
  • 相关阅读:
    其它人的面试
    面试准备——(一)测试基础(3)测试用例的编写
    面试准备——(三)Selenium(1)基础问题及自动化测试
    HTTP简介,http是一个属于应用层的面向对象的协议
    fidder(介绍)
    软件测试基础知识大全
    为什么要走川藏线(人文版)(转)
    将Windows 8.1 系统窗口背景设置成淡绿色?
    如何看待淘宝二手交易APP“闲鱼”推出的新功能“闲鱼小法庭”?
    轻轻松松种绿豆
  • 原文地址:https://www.cnblogs.com/landiss/p/13864776.html
Copyright © 2011-2022 走看看