1

在输入左大括号后插入右大括号真的很容易:

inoremap { {<CR>}<Esc>ko

这边走

if (true) {

转换为

if (true) {
    |
}

但我想节省时间并少输入 1 个字符:

if (true)<CR>

所以我想创建以下规则:如果按下返回并且该行以 if/for/while 开头,则执行{<CR>}<Esc>ko

这是可行的吗?

谢谢

4

1 回答 1

4

在您之前的映射的基础上,这应该可以满足您的需求:

inoremap )<CR> ) {<CR>}<Esc>ko

但是,您应该尝试使用 SnipMate 或 Ultisnips 之类的片段扩展插件。这两个插件都允许您定义带有占位符和镜像的片段(默认情况下包括很多),<Tab>在触发后按下 a 时会展开这些片段。

例如,您有一个与触发器关联的片段,该片段if扩展为:

if ([condition]) {

}

condition被选中,准备好输入,完成后,您可以<Tab>再次点击以在大括号之间跳转光标,准备输入:

if (myVar == 5) {
  |
}

这非常方便。

于 2013-04-01T11:01:00.307 回答