如何在gVim </cr>暂时iab <cr>

时间:2011-06-21 14:57:49

标签: vim

我把它放在我的_vimrc

iab fi for(int i=0; i<; i++)<CR>{<CR>}<ESC>2kf<a

它将fi扩展为for...loop

for(int i=0; i< █; i++)
{
}

输入100后,点击ENTER,我想在{...}之间打开一个新行

for(int i=0; i< 100; i++)
{
    █
}

有没有办法做到这一点? 谢谢!


我使用自我毁灭的映射到<CR>,我认为还有另一种方法。

iab fi for(int i=0; i<; i++)<CR>{<CR>}<ESC>2kf<a<C-R>=EatSpace()<CR>

fun! EatSpace()
    let nr = getchar()
    call MapEnter()
    if nr==32
        return ''
    else
        return nr2char(nr)
    endif
endfun

fun! MapEnter()
    inoremap <CR> <ESC>:iunmap <C-V><CR><CR>jo
    return ''
endfun

1 个答案:

答案 0 :(得分:3)

snipmate vim plugin正是提供此功能。

for<Tab>将生成以下代码:

 for (i = 0; i < count; i++)
 {
    /* code */
 }

在以下<TAB>按下,您将跳至count,然后/* code */

您还可以轻松自定义要插入的代码段。

如果您不想使用外部插件,您仍然可以下载snipmate代码以了解它是如何完成的。