修复 tabbar.vim/minibufexpl.vim bug 一个

这几天在设置 Vim 环境,见一插件 tabbar.vim ,可快速切换 buffer,很爽。但这玩意是基于 minibufexpl.vim 写的,结果把 minibufexpl.vim 的一个 bug 都带来了。

以前试用过 minibufexpl.vim ,结果打开 ~ 结尾的文件就出一大堆错,故弃之。但这次这个 tabbar 很好用,于是花了几分钟把 bug 修复了。如下:

415     if (l:curBuf != -1)
416         call search('\['.l:curBuf.':'.expand('#'.l:curBuf.':t').'\]')
417     else
418         call <SID>DEBUG('Tb_Start: No current buffer to search for',9)
419     endif

问题就出在 415 行, search() 接受的是个 regexp ,所以一旦文件名中含有某些特定字符(例如 ~ ),就会导致出错。解决方法也很简单:转码(留意 417 行)。

415     if (l:curBuf != -1)
416         "call search('\['.l:curBuf.':'.expand('#'.l:curBuf.':t').'\]')
417         call search(escape('['.l:curBuf.':'.expand('#'.l:curBuf.':t').']','\\/.*$^~[]'))
418     else
419         call <SID>DEBUG('Tb_Start: No current buffer to search for',9)
420     endif

minibufexpl.vim 的问题也是一样道理。定位到 693 行,就会发现 tabbar.vim 那段是照搬 minibufexpl.vim 的。

  1. Welcome ~

    Life is like a box of chocolates,
    you never know
    what you gonna get.


  2. 因为某原因, google blog 暂时停止更新..
    by AutumnCat, 2007-6-12
  3. 最新文章

  4. 最新评论

  5. 分类

  6. 归档