昌旭的博客


机器学习、编程和数学


Vim基本操作总结

说起来VIM确实好用,不仅高效率,而且更重要的是 —— 能装逼。但是代价便是入门门槛较高。
所以在此我总结下自己常用的VIM命令,同时也是给我同学的一个入门教程。
VIM还有个官方自带教程,在命令行下输入

$ vimtutor

VIM的模式

  • x删除当前字符
    VIM的强大之处便在于它有很多种模式,传统的编辑器如记事本只是对应了VIM中的编辑模式(Insert Mode)
    细说起来VIM其实有很多种模式,但是实际上对我们来讲最常用也是最重要的是其中三种

  • 一般模式(Normal Mode)

  • 编辑模式(Insert Mode)
  • 命令模式(Command Mode)

基本操作

以下介绍的所有命令都是大小写敏感的,而且是在一般模式命令模式下执行,务必注意!!!

移动

以字符为单位的移动

  • x删除当前字符
  • k
  • j
  • h
  • l

以词为单位的移动

  • x删除当前字符
  • word,下一个词
  • Word,下一个词,但是跳过标点
  • backward,上一个词
  • B你猜
  • end,当前词的尾部

行移动

  • x删除当前字符
  • 0移动到0号字符,即行开头
  • ^跳到当前行第一个非空字符,意义同正则表达式
  • $跳到行尾,意义同正则表达式

段落移动

  • x删除当前字符
  • {上一段(以空白行分隔)
  • }下一段(以空白行分隔)
  • %跳到与当前括号对应的括号上

跳跃移动

  • x删除当前字符
  • /word搜索输入的word,然后用n到下一个位置,用N到上一个位置
  • #向前搜索当前所在字符
  • *向后搜索当前所在字符
  • gd跳到光标所在词的定义位置g(o)d(efine)
  • gg跳到文件开头
  • G跳到文件末尾
  • :x跳到x
  • Ctrl+d向下翻页
  • Ctrl+u向上翻页

编辑

插入

  • x删除当前字符
  • insert,在当前位置向前插入
  • I在本行第一个字符前插入
  • after,在光标当前位置向后插入
  • A在本行末尾插入
  • o向下插入一新行
  • O你猜

删除

  • x删除当前字符
  • dd删除当前行
  • dw删除当前词
  • u撤销操作

复制粘贴

  • x删除当前字符
  • yy复制当前行
  • yw复制当前词
  • p粘贴
  • P粘贴在当前位置之前

保存

  • x删除当前字符
  • :q退出
  • :w保存
  • :wq保存并退出

进阶操作

这本来只是一个操作总结,为了ZM才写的多一点的,再多就成了教程了,那就说多了,所以以下仅仅是抛砖引玉。

VIM操作原子化

VIM操作都是原子化的,所以可以组合,比如16j就是向下移动16行,3dw就是删除3个词,无数情况,详见vimtutor。

高效编辑

  • di"光标在””之间,则删除””之间的内容
  • yi(你猜
  • vi[选中[]之间的内容

以上三种、请举一反三,组合很多

  • dtx从光标位置开始删除字符,直到遇到第一个字符x
  • ytx你猜

更多

VIM绝对是博大精深,还有标记啊、宏啊、一堆插件啊、配置啊什么的,慢慢研究吧。用好了绝对超神,还能装逼。
据说微软许多大牛放着VS不用,用VIM、Emacs写C#。

参考资料: