2014-06-16 25 views
3

蜂鳴每次我進入時間>下面是一個PHP代碼片段如何停止VIM在PHP

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

當我在Vim中輸入這個,我會在按下>鍾/嘟嘟聲。如果我輸入<something>,則不會發生這種情況,所以我認爲它會試圖說出「啊,你已經關閉了一個尖括號但是你沒有打開一個!」。但它沒有什麼幫助,似乎不理解上下文:賦值給一個關聯數組。

當我輸入$foo->bar時,它也發出嗶嗶聲。

我有set ft=php,這似乎工作正常,除了這個真氣嗶嗶聲。

我知道我可以完全禁用蜂鳴聲,但我寧願保持嘟嘟聲,因爲我確實需要嘟嘟at for地說。我知道關於視覺響鈴,但我不想每次訪問方法,屬性或分配給新陣列時頭痛都會引發閃光!

回答

4

你可能有set showmatch線,正如你所說的,嘗試是有益的,符合開放式和封閉式支架。

你可以嘗試添加下面一行在你的.vimrc:

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

或只是

setlocal matchpairs-=<:> 
在PHP的vim配置

4

嗶聲是由選項試圖找到相應的<,它不能。因此,您可以通過以下方式防止蜂鳴聲:

  • 'matchpairs'選項中刪除尖括號;但是,這也將禁用HTML標記開始/結束處的功能::setlocal matchpairs-=<:>
  • 關閉;相比於前者,這不幸的是,全局設置:set noshowmatch
+0

我創建了一個功能要求添加新的選項以避免在這種情況下發出嘟嘟聲:https://code.google.com/p/vim/issues/detail?id=319 – blueyed

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

+0

這對於一般用途來說絕對是更好的答案。例如,在Alt連接的命令上禁用錯誤鈴聲,可以調用SetBell(0):調用SetBell(1):調用SetBell(0)''' – DavisDude