每次进入>时如何停止vim蜂鸣用PHP

时间:2014-06-16 10:56:22

标签: php vim

这是一个PHP代码段

 $foo = array( 'bar' => 'baz' );

当我在Vim中输入此内容时,按下>时会收到铃声/嘟嘟声。如果我输入<something>,就不会发生这种情况,所以我认为这样做有助于说&#34;啊,你已经关闭了一个角括号,但你没有打开一个!&#34 ;.但它没有帮助,似乎没有理解上下文:分配给关联数组。

当我输入$foo->bar时,它也会发出哔哔声。

我有set ft=php,除了这种令人愤怒的哔哔声之外,一切似乎都运转正常。

我知道我可以完全禁用哔哔声,但我宁愿保持蜂鸣声,因为我确实需要为此事做好准备。我知道视觉铃声,但每次访问方法,属性或分配给新阵列时,我都不想让头疼引起闪光!

3 个答案:

答案 0 :(得分:4)

蜂鸣声是由'showmatch'选项导致尝试找到相应的<引起的。因此,您可以通过以下方式阻止蜂鸣声:

  • 'matchpairs'选项中删除尖括号;但是,这也会禁用HTML标记开头/结尾的功能::setlocal matchpairs-=<:>
  • 关闭'showmatch';与前者相反,不幸的是,这是一个全球性的设置:set noshowmatch

答案 1 :(得分:4)

你可能有set showmatch行,如你所说,试图提供帮助并匹配开括号和闭括号。

您可以尝试在.vimrc中添加以下行:

au BufWinEnter *.php set mps-=<:>

或只是

setlocal matchpairs-=<:>

在PHP vim配置中。

答案 2 :(得分:1)

您可以在插入模式下完全禁用铃声:

" Disable bell during insert mode, to avoid beep with 'showmatch'.
" Source: https://code.google.com/p/vim/issues/detail?id=319
augroup NoBellDuringInsert
    au!
    au InsertEnter * :call SetBell(1)
    au InsertLeave * :call SetBell(0)
augroup END

fun! SetBell(disable)
  if a:disable
    let s:mybell = [&eb, &vb, &t_vb]
    " need to set visualbell, else bell will still be called.
    set noeb vb t_vb=
  else
    let [&eb, &vb, &t_vb] = s:mybell
  endif
endfun

vim_dev邮件列表上的新设置有一个待处理的修补程序:https://groups.google.com/d/msg/vim_dev/-jN4_nsSls0/Nbjbrh4jXYEJ