Vim插件帮助:自动插入关闭支架,光标位于中间

时间:2010-01-26 16:58:09

标签: vim plugins

我发现了一些线索,但他们已经3岁了。当我输入{时,是否有人为vim推荐插件 它会做:

{
::cursor here::
}

另一个有用的事情是,如果我键入if,它会执行:

if(::cursor here::)

由于

6 个答案:

答案 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