这是一个PHP代码段
$foo = array( 'bar' => 'baz' );
当我在Vim中输入此内容时,按下>
时会收到铃声/嘟嘟声。如果我输入<something>
,就不会发生这种情况,所以我认为这样做有助于说&#34;啊,你已经关闭了一个角括号,但你没有打开一个!&#34 ;.但它没有帮助,似乎没有理解上下文:分配给关联数组。
当我输入$foo->bar
时,它也会发出哔哔声。
我有set ft=php
,除了这种令人愤怒的哔哔声之外,一切似乎都运转正常。
我知道我可以完全禁用哔哔声,但我宁愿保持蜂鸣声,因为我确实需要为此事做好准备。我知道视觉铃声,但每次访问方法,属性或分配给新阵列时,我都不想让头疼引起闪光!
答案 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