如何在vim中启动代码块后自动插入大括号?

时间:2013-04-01 10:43:07

标签: vim

在键入开头后插入右括号非常容易:

inoremap { {<CR>}<Esc>ko

这样

if (true) {

转换为

if (true) {
    |
}

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

if (true)<CR>

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

这可行吗?

由于

1 个答案:

答案 0 :(得分:4)

在您之前的映射的基础上,这应该做你想要的:

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

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

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

if ([condition]) {

}
选择了

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

if (myVar == 5) {
  |
}

这非常方便。