推荐一些VIM操作技巧
VIM 学习成本不低,但是习惯了爱不释手。熟能生巧(死记硬背),共勉。
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 重做
点命令
点命令:重复上一次操作,这个命令很好用!强烈推荐。
-
日常文本搜索和替换
ciw 删除当前单词后,输入替换文本,在下一个相同单词处按 . 可执行相同的操作效果。
-
文本删除
dd dw 删除文本,再按 . 有时候比 d5w 更习惯一些。
-
搜索匹配编辑文本
比如上述 dw 删除单词后, / 搜索,n. 替换下一处匹配文本。
缓冲区
VIM 是支持 a-z 的命名缓冲区的,例如 “ayy,可以将当前行复制到缓冲区 a,”ap 可以粘贴缓冲区 a 的内容。
不过缓冲区这个功能在 MAC 上有了 Paste 之后已经对我没什么特别大用处了。
可以看我之前推荐的一些 MAC 效率软件:离开这几款MAC软件可能不会工作了
分屏
- :split 上下分屏
- :vsplit 左右分屏
- Ctrl-w 配合 hjkl 可左右在分屏之间移动
宏录制
日常工作中,重复的批量操作特别多,相信大家都用过IDEA的列编辑操作,VIM 一样可以实现类似的效果,来简单对比一下。
-
IDEA 列编辑
-
VIM 宏录制
- qa 开始录制宏,保存再寄存器 a 中。
- 完成操作序列。
- q 完成宏录制。
- @a replay 被录制的宏。
- @@ replay 最新录制的宏。
- 4@a 重复 replay 4 次宏。
IDEA 列编辑在文本非常大时会比较卡,相比之下 VIM 宏录制的效率很高,强烈推荐学习下,找到自己合适的方式。