我把它放在我的_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
答案 0 :(得分:3)
snipmate vim plugin正是提供此功能。
for<Tab>
将生成以下代码:
for (i = 0; i < count; i++)
{
/* code */
}
在以下<TAB>
按下,您将跳至count
,然后/* code */
您还可以轻松自定义要插入的代码段。
如果您不想使用外部插件,您仍然可以下载snipmate代码以了解它是如何完成的。