我发现了一些线索,但他们已经3岁了。当我输入{
时,是否有人为vim推荐插件
它会做:
{
::cursor here::
}
另一个有用的事情是,如果我键入if
,它会执行:
if(::cursor here::)
由于
答案 0 :(得分:3)
我使用delimiteMate.vim。它以可配置且非烦人的方式处理此问题。
答案 1 :(得分:2)
查看snipMate插件。它非常可定制。有一个很好的screen-cast显示插件正在运行。
例如在C中使用snipMate插件。
if<Tab>
would produce:
if (::cursor:1::) {
::cursor:2::
}
首先&lt; Tab&gt;将光标留在:: cursor:1 ::和第二个&lt; Tab&gt;会带你去:: cursor:2 ::。
snipMate中的bash脚本应该有类似的东西,如果没有,添加一个就很简单。
答案 2 :(得分:1)
我使用以下代码(php-templates):
function! EatChar()
let l:char=getchar(0)
return ''
endfunction
inoreabbrev function_ function <ESC>maa()<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev if_ if (<ESC>maa)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev ifelse_ if (<ESC>maa)<CR>{<CR><CR>}<CR>else<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev for_ for (<ESC>maa; ; )<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev foreach_ foreach (<ESC>maa as $key=>$value)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev while_ while (<ESC>maa)<CR>{<CR><CR>}<ESC>`aa<C-O>:call EatChar()<CR>
inoreabbrev <? <?php <ESC>maa ?><ESC>`aa<C-O>:call EatChar()<CR>
答案 3 :(得分:1)
This article显示了一个简单的解决方案,并且链接到一些更强大的解决方案。
以下是该页面解决方案的一部分:
inoremap { {}<Left>
inoremap {<CR> {<CR>}<Esc>O
inoremap {{ {
inoremap {} {}
答案 4 :(得分:1)
有许多插件和ftplugins可以完成这项工作。大多数时候,新手插件并不是更好,因为他们经常重新发明轮子而不考虑奇怪的情况。
在“旧”的东西中,我有:
(*)在注释/字符串上下文中阻止了映射/缩写的扩展,提供了几种周围形式的C控制语句,并且还支持一些样式选项(在C控制语句的情况下) ;它们很容易转换为其他语言)
答案 5 :(得分:0)
如果您不需要各种文本片段插件的功能(或者只是不想弄清楚如何根据您的需要进行配置)并且只有少数(一个或两个)简单模板,那么您可以记录其创建并将其映射到快捷方式。
例如,
:nmap <leader>b o{<cr>}<esc>O