vim提供非常丰富的删除方式。
normal模式下:
- x——直接删除某个字符
- dd——删除整行
- dw——从当前光标开始,删除到单词末尾
- d^——从当前光标开始,往回删除到行首
- d&——从当前光标开始,删除到行尾
- dj——删除当前行以及下一行
- dk——删除当前行以及上一行
- 。。。
对,d可以跟各种移动方式组合,只要你熟悉vi内的光标移动,你可以把d命令玩出花来。
insert模式下:
- ctrl-w——往回删除整个单词
- delete/backspace——根据你的系统,分别是前删和后删一个字符
- 。。。。
但是这里有一个问题,很多时候我的变量是驼峰或者下划线分割的。这个时候我希望能只删除一个单词,修改,目前没有看到比较合适的插入模式的方案。normal模式可以实现,但是每次都需要考虑怎么移动,说实话不是很舒服。比如下面的变量:
HELLO_WORLD_CPP
我想删掉CPP,换成PYTHON,
或者是HelloWorldCpp,把Cpp替换成Python
我有几个选择:
- 使用替换命令
- 在insert模式把CPP一个个删掉,然后重新输入
- normal模式定位到CPP的C,然后dw,然后插入模式,重新输入PYTHON
- 。。。
于是我想了下,写了个智能删除的脚本,针对驼峰的单词,删除到驼峰开始,针对下划线的单词,删除到下划线开始。
HELLO_WROLD_CPP,光标在CPP之后,触发脚本,就删掉CPP,变成:
HELLO_WORLD_
同理驼峰HelloWorldCpp,光标在Cpp之后,触发脚本,就删掉Cpp,变成:
HelloWorld
插件上传到了Github:
https://github.com/johnzeng/Smart-deleteion-vim
可以使用你自己的插件安装工具安装这个插件。以Plug为例,可以在.vimrc文件增加一个
Plug 'johnzeng/Smark-deleteion-vim'
就行了。
支持自动设置按键绑定:
let g:smart_delete_key_map='<M-w>'
默认绑定的案件时M-w,也就是Alt+w的组合。