推荐一些VIM操作技巧

VIM 学习成本不低,但是习惯了爱不释手。熟能生巧(死记硬背),共勉。

image

VIM 冒险小游戏 http://vim-adventures.com/

移动

文本

  • w 移动到下一个单词
  • e 移动到单词结尾
  • 一个很长的单行文本光标如何上下移动?jk 已经无法上下移动了,可以使用 gj、gk。

屏幕

  • H 屏幕的第一行
  • M 屏幕的中间一行
  • L 屏幕的最后一行
  • Ctrl-e 向下滚动一行
  • Ctrl-y 向上滚动一行

段落

  • ( 前移至最近的句首
  • ) 后移至最近的句首
  • { 前移至最近的段首
  • } 后移至最近的段首

选择与编辑

  • de 删除一个单词
  • ggVG 选择整个文件
  • ggdG 删除整个文件
  • ~ 切换大小写
  • : /pattern\c 搜索忽略大小写
  • :%s/pattern/replace/g 全局替换
  • v 进入可视化模式,Ctrl+v 进入列选择模式,G 可以移动到最后一行,d 可以删除选中的文本;r 开启替换模式;I 开启插入模式,ESC 之后可以看到批量插入的内容。
  • cw 删除当前单词
  • c$ 删除光标至行尾
  • zo 展开
  • zc 收起,删除函数可用
  • :%s/pattern//gn. 统计字符串出现的次数
  • t, 移动到逗号前的第一个字符, 逗号可以换成其它字符。
  • g; 回到上次修改的位置。
  • u 撤销,Ctrl-r 重做

点命令

点命令:重复上一次操作,这个命令很好用!强烈推荐。

  1. 日常文本搜索和替换

    ciw 删除当前单词后,输入替换文本,在下一个相同单词处按 . 可执行相同的操作效果。

  2. 文本删除

    dd dw 删除文本,再按 . 有时候比 d5w 更习惯一些。

  3. 搜索匹配编辑文本

    比如上述 dw 删除单词后, / 搜索,n. 替换下一处匹配文本。

缓冲区

VIM 是支持 a-z 的命名缓冲区的,例如 "ayy,可以将当前行复制到缓冲区 a,"ap 可以粘贴缓冲区 a 的内容。

不过缓冲区这个功能在 MAC 上有了 Paste 之后已经对我没什么特别大用处了。

可以看我之前推荐的一些 MAC 效率软件:离开这几款MAC软件可能不会工作了

分屏

  • :split 上下分屏
  • :vsplit 左右分屏
  • Ctrl-w 配合 hjkl 可左右在分屏之间移动

宏录制

日常工作中,重复的批量操作特别多,相信大家都用过IDEA的列编辑操作,VIM 一样可以实现类似的效果,来简单对比一下。

  • IDEA 列编辑

    idea_col_edit
  • VIM 宏录制

    • qa 开始录制宏,保存再寄存器 a 中。
    • 完成操作序列。
    • q 完成宏录制。
    • @a replay 被录制的宏。
    • @@ replay 最新录制的宏。
    • 4@a 重复 replay 4 次宏。
    vim_macro

IDEA 列编辑在文本非常大时会比较卡,相比之下 VIM 宏录制的效率很高,强烈推荐学习下,找到自己合适的方式。

转载请注明出处,欢迎关注我的公众号:亚普的技术轮子

亚普的技术轮子