在输入左大括号后插入右大括号真的很容易:
inoremap { {<CR>}<Esc>ko
这边走
if (true) {
转换为
if (true) {
|
}
但我想节省时间并少输入 1 个字符:
if (true)<CR>
所以我想创建以下规则:如果按下返回并且该行以 if/for/while 开头,则执行{<CR>}<Esc>ko
这是可行的吗?
谢谢
在输入左大括号后插入右大括号真的很容易:
inoremap { {<CR>}<Esc>ko
这边走
if (true) {
转换为
if (true) {
|
}
但我想节省时间并少输入 1 个字符:
if (true)<CR>
所以我想创建以下规则:如果按下返回并且该行以 if/for/while 开头,则执行{<CR>}<Esc>ko
这是可行的吗?
谢谢
在您之前的映射的基础上,这应该可以满足您的需求:
inoremap )<CR> ) {<CR>}<Esc>ko
但是,您应该尝试使用 SnipMate 或 Ultisnips 之类的片段扩展插件。这两个插件都允许您定义带有占位符和镜像的片段(默认情况下包括很多),<Tab>
在触发后按下 a 时会展开这些片段。
例如,您有一个与触发器关联的片段,该片段if
扩展为:
if ([condition]) {
}
condition
被选中,准备好输入,完成后,您可以<Tab>
再次点击以在大括号之间跳转光标,准备输入:
if (myVar == 5) {
|
}
这非常方便。