与emacs括号echo

时间:2016-12-29 22:20:22

标签: c vim

在emacs中,当我将光标放在}上时,echo缓冲区显示匹配的{

的相应内容

例如:

if(a==b){
.
.
.
}

将光标放在}上会显示“if (a==b).

谷歌搜索帮助找到这个听起来相似的插件 https://github.com/vim-scripts/tEchoPair/blob/master/README 我是vim的新手。我安装了插件,但是我没有得到预期的结果。

有没有更好的方法来获得匹配的括号文本?如果没有,我该如何使用这个插件?

1 个答案:

答案 0 :(得分:2)

我尝试编写一个小脚本ShowMatchBrace.vim(您可以将其放在.vimrc中),该脚本会显示" } "和" ) "在正常模式下。 (你可以自由地用它做任何事情)

autocmd! CursorMoved * call <SID>MatchBraces()

"This variable is for redrawing the cmd-line"
if !exists("s:brace")
   let s:brace=0
endif

function! s:MatchBraces()
   let l:currentPos=getpos('.')
   if getline('.')[col('.') - 1] =~# '\v\}|\)'
      let s:brace=1 
      normal! % 
      if getline('.')[col('.')-1] =~# '\v\{|\('  
         echo getline('.')
      else      
         echohl ErrorMsg | echomsg "No match found for }|)" | echohl None
      endif     
   elseif s:brace ==# 1
      call feedkeys("\<c-l>")
      let s:brace=0
   endif
   call setpos('.',l:currentPos)
endfunction

Demo1

Demo

<子> 1 Demo是在对代码添加少量更改之前添加&#34;)&#34; case但它的行为方式与&#34;}&#34;完全相同。