• vim编辑器介绍及其常用命令


    vim简单的介绍

      Vim 编辑器是一个模式编辑器 。 这意味着在不同状态下编辑器有不同的行为模式 。 两个基本的模式是 Normal 模式和 Insert 模式 ,还有可视模式。 在 Normal 模式下你键入的每一个字符都被视为一个命令 。 而在 Insert 模式下键入的字符都作为实际要输入的文本内容 。可视模式为我们提供了极为友好的选取文本范围,以高亮显示。

      刚启动时 Vim 工作于 Normal 模式 。 要进入 Insert 模式你需要使用"i"命令(i 意为 Insert). 接下来就可以直接输入了 。
      最后按下键退出 Insert模式回到 Normal 模式 。 要进入可视模式你按“v”就可以了,接下来就会进入可视模式。

    模式间的转换

    这里写图片描述

    命令 说明
    i 在光标之前插入
    a 在光标之后插入
    I 在光标所在行的行首插入
    A 在光标所在行的行末插入
    o 在光标所在的行的上面插入一行
    O 在光标所在的行的下面插入一行
    s 删除光标后的一个字符,然后进入插入模式
    S 删除光标所在的行,然后进入插入模式
    v 进入可视化模式

    退出vim编辑器

    欲退出vim编辑器,请先回到正常模式,在输入: 回到命令模式,此时请输入以下命令∶

    • :q   正常不保存退出
    • :q!  强制不保存退出
    • :wq  正常保存退出

    :如果你在放弃所有修改后还想以该文件的初始内容作为开始继续编
    辑,还可以用":e!"命令放弃所有修改并重新载入该文件的原始内容 。

    工作模式显示设置

    要知道你现在所处的工作模式是什么,打开显示模式的开关:

    :set showmode
    

    你会看到按下冒号键之后当前光标跑到窗口的最后一行去了 。 那是使用冒号命令的地方(顾名思义,冒号命令就是总是以冒号打头的命令). 最后按下回车键结束整个命令(所有的冒号命令都以这种方式表明命令的结束).
    现在就会在窗口底部显示模式的名称
    --INSERT--这表明你目前处于 Insert 模式 。
    --VISUAL-- 这表明你目前处于可视模式。
    注:Normal 模式并不会显示--NORMAL--, 作为默认的工作模式它不显示任何字串

    移动光标

    移动光标有两种方式
    第一种:常用的用箭头移动
    第二种:用vim提供的方式:

     在 Normal 模式后,你就可以用下面的命令来移动光标:
    h 左 
    j 下
    k 上
    l 右
    

    即:

    这里写图片描述

    删除字符

    格式 d+位移命令

    命令 说明
    x 删除一个字符
    nx 删除n个字符
    dw 命令可以删除一个 word
    dnw 命令可以删除n个 word
    dd 删除所在行
    ndd 删除从本行起第n行(n可以为负数)
    d$ 命令就是删除自当前光标到行尾的内容
    :j 删除本行的换行符
    :nj 删除第n行的换行符,当为n负数时删除从本行起的前n行的换行符

    注: 很多命令都可以接受一个数字作为重复执行同一命令的次数 。
    比如在本行添加10个你好!,就可以这样写 10a你好!

    接下来就是讲一些比较常用的操作命令

    常用命令

    移动

    • 以 Word 为单位的光标移动

    • w  命令还是会将光标移动到下一个 word 的首字符上

    • b  命令则将光标向后移动到前一个word 的首字符上

    • e   命 令 会 将 光 标 移 动 到 下 一 个 word 的 最 后 一 个 字符

    • ge   将光标移动到前一个 word 的最后一个字符上

    • 将光标移到行首或行尾

    • ^  命令将光标移动到当前行的第一个非空白字符上
         注:命令"^"前加上一个计数并没有任何效果

    • $  命令将光标移动到当前行行尾

    • n$  则会移动到下n行的行尾

    • 0  命令将光标移动到当前行行首

    • 将光标移动到指定的字符上

    • fx  在当前行上查找下一个字符 x. 提示:"f"意为"find".汉字的空格不被视为空白字符

    • nfx  会把光标定位查找第n个字符 x
         如:命令"3fa"会把光标定位于"ababaa"的第三个"a"上

    • Fx  命令向左方向搜索

    • tx  命令形同"fx"命令,只不过它不是把光标停留在被搜索字符上,而是在它之前的一个字符上

    • Tx  命令向左方向搜索

      注:这 4 个命令都可以用";"来重复 。 以","也是重复同样的命令,但是方向与原命令的方向相反 2 。 无论如何,这 4 个命令都不会使光标跑到其它行上去 。 即使当前的句子还没有结束

    • 将光标移动到匹配的括号上

    • **% **  它跳转到与当前光标下的括号相匹配的那一个括号上去

    将光标移动到指定的行上

    • nG  就会把光标置于第 n 行上
    • G   会把光标定位到最后一行
    • gg  命令是跳转到第一行的快捷的方法
    • "H"意为 Home, "M"为 Middle, "L"为 Last.分别跳到首行,中间,末行

    滚屏

    • CTRL-U  命令会使文本向下滚动半屏
    • CTRL-D  命令将窗口向下移动半屏,所以相当于文本向上滚动了半屏
    • CTRL-E  向上滚动一行
    • CTRL-Y  向下滚动一行
    • CTRL-F  向前滚动一整屏(实际上是整屏去两行)
    • CTRL-B  向后滚动一整屏
    • zz    把当前行置为屏幕正中央
    • zt    命令会把当前行置于屏幕顶端
    • zb    则把当前行置于屏幕底端

    搜索

    • /string   命令可用于搜索一个字符串,这里也可以使用正则表达式
    • ?string  命令与"/"的工作相同,只是搜索方向相反
        注: 字符.*[]^%/?~$ 有特殊意义,如果你要找的东西包括这些内容,要在这些字符前面放置一个反斜杠 。

      要查找上次查找的字符串的下一个位置 。 使用"n"命令如果你知道你要找的确切位置是目标字符串的第几次出现,还可以在"n"之前放置一个命令计数 。 "3n"会去查找目标字符串的第 3 次出现 。"N"命令会重复前一次查找,但是与最初用"/"或"?"指定的搜索方向相
    反 。

    • 忽略大小写
        通常情况下你要准确地键入你要查找的东西 。 如果你并不关心目标字
      符中字母的大小写,可以通过设置'ignorecase'选项
    :set ignorecase
    
    :set noignorecase
    
    • 查找整个 WORD
      如果你用"/the"来查找 Vim 也会匹配到"there". 要查找作为独立单
      词的"the"使用如下命令:
    /the>
    
    • 高亮显示搜索结果
    :set hlsearch
    
    :set nohlsearch
    
    • 使用标记
      当你用"G"命令从一个地方跳转到另一个地方时,Vim 会记得你起跳的位置 。 这个位置在 Vim 中是一个标记

    • ``”   命令可以在两点之间来回跳转

    • CTRL-O  命令是跳转到你更早些时间停置光标的位置(提示:O 意为 older)

    • CTRL-I   则是跳回到后来停置光标的更新的位置,与按下键一样

    • :jumps   命令会列出关于你曾经跳转过的位置的列表 。 你最后一个跳转的位置被特别以一个">"号标记

    • 'mark  (单引号,或者叫呼应单引号)会使你跳转到 mark 所在行的行首
        Vim 允许你在文本中定义你自己的标记 。 命令"ma"将当前光标下的位
      置名之为标记"a"。 从 a 到 z 一共可以使用 26 个自定义的标记 。 定义后的标记在屏幕上也看不出来 。 不过 Vim 在内部记录了它们所代表的位置 。
        要跳转到一个你定义过的标记,使用命令`{mark}, {mark}就是你定
      义的标记的名字 。
      标记当前选中行标记为a,命令为  ma
      跳转到a标记处 命令为: 'a

    •  :marks  查看关于标记的列表

    文本的改变

    删除

    格式 d+位移命令

    命令 说明
    x 代表 dl(删除当前光标下的字符)
    X 代表 dh(删除当前光标左边的字符)
    D 代表 d$(删除到行尾的内容)
    nx 删除n个字符
    dw 命令可以删除一个 word
    dnw 命令可以删除n个 word
    dd 删除所在行
    ndd 删除从本行起第n行(n可以为负数)
    d$ 命令就是删除自当前光标到行尾的内容
    db 删除自当前光标至前一个 word 的开始
    diw 删除当前光标所在的 word(不包括空白字符)
    daw 删除当前光标所在的 word(包括空白字符)
    dG 删除当前行至文件尾的内容
    dgg 删除当前行至文件头的内容
    :j 删除本行的换行符
    :nj 删除第n行的换行符,当为n负数时删除从本行起的前n行的换行符

    修改

    命令 说明
    c 修改操作符
    cw 改变到一直到 word 结尾的内容
    ce 改变到一直到 word 结尾的内容和cw一样
    cc 命令可以改变整行,不过仍保持原来的缩进
    c$ 改变当前光标到行尾的内容
    s 代表 cl(修改一个字符)
    S 代表 cc(修改一整行)

    注:**c命令的行为与"d"命令类似,不过在命令执行后会进入 Insert 模式 **

    重复改动

      "."命令是 Vim 中一个简单而强大的命令 。 它会重复上一次做出的改动 。

      假设你在编辑一个 HTML 文件,想删除其中所有的<B>标签 。 你把
    光标置于<B>的<字符上然后命令"df>". 然后到</B>的<上用"."命令做同样的事 。
      "."命令会重复你做出的所有修改,除了"u"命令CTRL-R和以冒号开头的命令 。
      "."需要在 Normal 模式下执行,它重复的是命令,而不是被改动的内容

    Visual 模式

    命令 说明
    v 进入可视模式,以字符为单位选择。
    V 进入可视模式,以行为单位选择。
    CTRL-V 进入列块可视模式。
    gv 启动可视模式,重新选择上一次的选择区和相同模式。
    在可视模式下,该命令将交换当前和上一次选择区。
    在可视模式下使用 "p" 或 "P" 后,本命令选择被粘贴的文本。
    <LeftMouse> 设置当前光标位置。
    如果处在可视模式,则退出可视模式。此功能只有在 'mouse' 选项包含 'n' 或 'a' 才可用。
    如果点击位置与屏幕最后一行的距离在 'so' 选项设置的范围之内,屏幕文本将会上滚。
    如果点击位置与屏幕第一行的距离在 'so' 选项设置的范围之内,屏幕文本将会下滚。
    <RightMouse> 如果当前不是可视模式,则进入可视模式。
    光标位置和鼠标点击位置之间的文本将被高亮显示。
    如果当前已经处于可视模式,文本高亮选择区的起点或终点之一将被置为鼠标点击的位置。
    起点或终点的选择取决于谁离点击位置更近。此功能只有在 'mouse' 选项包含 'n' 或 'a' 时才可用。
    <LeftRelease> 如果 的位置与 不同,那么它的作用等同于
    此功能只有在 'mouse' 选项包含 'n' 或 'a' 时才可用。
    <Esc> 可视模式下: 停止可视模式。
    CTRL-C 可视模式下: 停止可视模式。
    如果插入模式等待中 (模式信息显示为 "-- (插入) 可视 --"),插入模式同时被停止。

    在可视界面的命令

    命令 说明
    o 跳到高亮文本的另一端
    即当前光标位置变成高亮文本的起点,光标移动到高亮文本的另一端。高亮区域保持不变。
    O 跳到高亮文本的另一端。
    同 "o" 命令相似,但是在列块模式下,光标移动到水平方向的另一个角。
    如果这个角上的字符占据了多个屏幕位置 (例如一个 <Tab>),那么高亮的文本区域会被改变。
    ~ 切换大小写
    d 删除
    c 修改
    y 复制
    > 右移
    < 左移
    ! 通过外部命令过滤
    = 通过 'equalprg' 选项的命令过滤
    gq 按照 'textwidth' 指定的宽度排版行

    移动文本

      你以"d"或"x"这样的命令删除文本时,被删除的内容还是被保存了起
    来 。 你还可以用 p 命令把它取回来
      "P"命令与"p"一样取回被删除的内容,不过它把被取回的内容置于光标之前 。 对于以"dd"删除的整行内容,"P"会把它置于当前行的上一行 。
      np就可以把被删除行的 n 份副本放到当前位置

    复制文本

      要把文本内容从一处复制到另一处,你可以先删除它,然后马上用"u"命令恢复删除 。 再用"p"把它放到你想要的地方去 。

    命令 说明
    yw 复制的内容中包括了 word 之后的空白字符 。如果你不想要它们,那就用"ye"
    ye 复制的内容中不包括了 word 之后的空白字符
    yy 命令复制一整行
    y$ 复制当前光标至行尾的命令是.

    剪贴板

    • "*yy  把一行内容复制到剪贴板
    • "*p  把剪贴板的内容复制出来

    文本对象

    • daw  删除这个单词(Delete A Word)
    • cis  修改一整个句子(Inner Sentence)
    • das  删除一个句子,把它后面的空白也给删除

    对象 说明
    aw 一个单词 (包括空格)
    iw 内含单词
    aW 一个字串 (包括空格)
    iW 内含字串
    as 一个句子 (包括空格)
    is 内含句子
    ap 一个段落 (包括空格
    ip 内含段落
    ab 一个 () 块 (包括小括号)
    ib 内含 () 块
    aB 一个 {} 块 (包括大括号)
    iB 内含 {} 块
    at 一个 块 (包含 tag)
    it 内含
    a< 一个 <> 块 (包括 <>)<
    i< 内含 <> 块<
    a[ 一个 [] 块 (包括 [])[
    i[ 内含 [] 块[
    a" 一个双引号字符串 (包括引号)
    i" 内含双引号字符串
    a' 一个单引号字符串 (包括引号)
    i' 内含单引号字符串
    a` 一个反引号字符串 (包括反引号)
    i` 内含反引号字符串

    替换模式

       "R"命令会让 Vim 进入 replace 模式 。 在此模式下,每个键入的字符都
    会替换掉当前光标下的字符 。 直到你键入结束该模式

      注:replace 模式下的例外是按下回车键并不会把当前字符替换为回车,而是插入一个回车

  • 相关阅读:
    使用SpringAop 验证方法参数是否合法
    log4jdbc-remix安装配置
    mybatis和spring3.1整合
    MyBatis-Spring 执行SQL语句的流程
    SSH配置log4j的方法
    Drupal 判断匿名用户必须先登录的解决方法
    Drupal 出错的解决办法
    crontab执行PHP
    本地生成Rails API文档
    一个根据身份证号获取的程序
  • 原文地址:https://www.cnblogs.com/yangliguo/p/7887135.html
Copyright © 2020-2023  润新知