有些时候确实 VIM 比普通操作要更快,特别是在录制宏并使用的时候。
除此之外其实很多 IDE 可以代替 VIM 的部分功能,甚至可视化页面使得操作更简易。
既然 Sublime Text 可以支持 Vim1,那么完全可以了解一下
preference - settings - user
将 ignored_packages 设置为空
{
"color_scheme": "Packages/Color Scheme - Default/Monokai Bright.tmTheme",
"font_size": 13.0,
"ignored_packages":[]
}
但是这样不支持 Command,需要重新 install 一个 VintageEx 的 package
注意,Sumlime 下很多原生命令和 Vim 的命令冲突,这个可以根据需求进行取舍
i
进入插入模式:1. 插入模式下按下 Esc
进入普通模式如果不确认在哪个模式就按两下
Esc
回到普通模式
Hints:1. {char}
指任何可输入单个字符
<CR>
指 Enter
按键<C-{char}>
指按住 Ctrl
然后按下 {char}
对应的按钮命令码 | 含义 | Comment |
---|---|---|
h j k l | 光标左,下,上,右 | |
x | 删除一个字符 | |
. | 重复上次编辑行为,重复命令码之前执行的所有编辑行为 | 圆点符号 |
u | 撤销 | |
> | 增加缩进 | |
wbe | 正向移动到下一单词的开头反向移动到上一单词的开头正向移动到下一单词的结尾 | 改为大写按钮后则不按照单词移动,按照字串移动 |
c | 修改 | 从当前字符修改至单词末尾: cw修改整个单词: caw |
d | 删除光标所在整个单词 | 删除整个单词: daw删除整个段落: dap |
<C-a> | 对选中的数字进行加 1 对选中的数字进行减一 | 对负数也有效 |
f{char} | 在行内查找下一指定字符 | 继续查找下一个: ;继续查找上一个: , |
/pattern<CR> | 在文档中查找下一处匹配项 | 继续查找下一个: n继续查找上一个: N |
?pattern<CR> | 在文档中查找上一处匹配项 | 同上 |
:s/target/replacement | 替换 | 继续替换下一个: &回退: u替换特定行范围内的文字: {num},{num}s/old/new/ |
$ | 行尾 | 单独使用可以跳到行尾,也可配合其他命令使用 |
r | 替换 | 可以替换单个字符,如果选中多个字符则会换为相同长度的重复单个字符 |
% | 跳转括号 | 跳转到对应括号的字符处 |
a | 在光标之后插入文本 | 在行末插入文本: A |
附一张 VIM 键位图2:
可惜图片不够清晰
例如下面这样的文字:
| aaa| vaaaa<br>aaaa<br>bbbb |
如果我们要修改出左边的aaa
,则可以直接双击然后修改
而若要修改右边的一团vaaaa<br>aaaa<br>bbbb
,则必须用到鼠标,运动鼠标之后还需要将手放回键盘进行编辑,这样耗费了一定时间,而使用VIM
的话只需要几个按键:vt|
v
代表开始选择t
代表直到某个特定字符|
就代表这个字符如此可以快速的选中右边的一团,最重要的是不需要操作鼠标
最重要的,如果有很多很多个这样格式的一团需要进行批量选中修改,那么VIM
可以节省很多时间
[^2]: [http://www.vimer.cny](http://www.vimer.cn)
例如需要选取大括号内的数据,只需要输入vi[
即可快速选中括号内所有数据,而不用移动鼠标来进行选取
如果选取是为了修改则可以直接输ci[
之前就听说 Marco Recording 是个很 6 的功能,这次正好来体验一下3
比如有 100 个这样的 item,要从中筛选出 30 个,如果用普通方法我们需要选中每个 item,然后删除,如果使用普通vim
,我们可以使用5dd
来删除每个 item,但是需要定位到 item 开头的cards
标签才能执行,这时候macro
是个很不错的 Solution
cards
cardNamecardName
cardDesc-cardDesc
cardType7cardType
cards
cards
cardNamecardName
cardDesc-cardDesc
cardType7cardType
cards
cards
cardNamecardName
cardDesc-cardDesc
cardType7cardType
cards
命令码 | 含义 | Comment |
---|---|---|
q{char} | 录制宏并保存到{char}这个变量中 | |
q | 停止录制 | |
「{char}p | 显示{char}变量里录制好的命令细节,会输出到光标所在位置 | |
{num}@{char} | 执行{char}里面录制的宏命令 |
这时候只需要以下几步
qa
: 开始录制宏并保存到变量a
中?cards{Enter}
: 跳转到前一个 cards 的位置并取消选择5ddq
: 删除 5 行并停止录制然后如果想要删除特定 item 就只需要输入@a
来调用变量a
里面保存的宏命令