VIM tips (2)

  1. 利用”ayy复制后,可使用”Ayy继续复制,新的内容会添加到寄存器a的尾部。
  2. 除了利用*来匹配当前光标下的单词外,还可以用表示向后查找的#。此外还有g*和g#,区别在于*,#要求严格匹配一个单词。
  3. 启动参数:
    vim + filename,vim打开后自动把光标移动到文末
    vim +/pattern filename,vim打开后自动查找pattern
  4. 多缓冲区编辑:
    利用:n和:N在缓冲区间移动
    利用:e filename来新开一个缓冲区
    利用:e#回到上一个缓冲区,其中#表示上一个被编辑的缓冲区,类似的%表示当前缓冲区
  5. 外部命令:
    :! command,执行外部命令
    :!!,执行最近一次执行的外部命令
  6. 录制与回放:
    当执行了:命令后,命令会自动存入:缓冲区,可以用@:回放
  7. :r !command与!!command有类似的作用,区别在于前者是插入而后者是替换

你可能会感兴趣

on November 13th, 2009 | 8 Comments »

8 Responses to “VIM tips (2)”

  1. jockcc says:

    弱弱的问一句..”ayy 跟 yy 或者 V+y 有嘛区别???

    • cooper says:

      分两部分理解这个命令
      “a和yy,后者你知道,而”a表示选定a这一个寄存器,待会用”ap或者”aP就可以把它贴出来
      类似的,轮换使用26个字母的话,就可以非常方便的实现多剪切板操作了
      而Vy则完全是两个命令:V进入Visual Line模式,选定当前行;y在Visual/Visual Line模式下是复制选中区域。

  2. jockcc says:

    噢噢..明白了..”b “c …枚举下去都可以的?????

    哈哈.又学一招…谢谢大师阿….这样方便多了…

    以前x|d|y 之后就得马上p 否则就没了….

    我去试试…

  3. jockcc says:

    呃..大师..我发现怎么复制都是两行????好像把光标所在和上一行 都给复制了????用V一下 好像就可以了??

    • cooper says:

      yy是复制一行的意思
      你要复制多行就2yy, 100yy这和dd是一个道理
      结合上”指定寄存器就是
      “a2yy
      “b3yy
      不应该出现“怎么复制都是两行”,“把光标所在和上一行”的情况

  4. jockcc says:

    哈哈..好..我再试试…

    还有..大师..想请求一下列编辑的用法….

    谢谢啦…

    • cooper says:


      我不是什么大师…
      vim的技巧也是在不断的学
      列编辑首先要确保你能进入Visual Block模式
      在Windows下默认进入Visual Block的按键是Ctrl+Q,而Linux是Ctrl+V

      hello world
      it is hello world message

      把光标移动到第一行的w上,按下Ctrl+V/Q进入Visual Block模式
      按j移动到下一行,可以看到第一行的w和第二行的h被选中
      这时候按I并输入”abc “并按两次Esc退出,可以看到

      hello abc world
      it is abc hello world message

      如果你用A替代I来执行上述操作,则结果应该是

      hello wabc orld
      it is habc ello world message

      仍然是I和A原本的意思,即从前插入和从后插入
      此外你还可以尝试使用x,d
      :)

  5. jockcc says:

    呃呃..总被列编辑搞晕..哈哈

    最爱VIM…

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>