为什么这个Vim命令会擦除终端上的所有字符?

时间:2013-04-12 16:06:58

标签: vim terminal

我的.vimrc中有这个功能,我得到了here

function! SetExecutableBit()
  let fname = expand("%:p")
  checktime
  execute "au FileChangedShell " . fname . " :echo"
  silent !chmod a+x %
  checktime
  execute "au! FileChangedShell " . fname
endfunction
command! Xbit call SetExecutableBit()

当我运行:call SetExecutableBit()时,它按预期工作。但是当我运行:Xbit时,所有字符都会从我的术语中消失(但不会在Gvim中消失)。我在gnome-terminal和urxvt上都重现了这个。如果我尝试用鼠标或ggVG突出显示某些文字,该文字将重新出现。

“之前”截图:

运行:Xbit后的术语屏幕截图:

选择一些文字后的屏幕截图:


更新,因为--noplugin发生了此错误,但<{1}} ,但它必须是我的.vimrc文件中的内容:https://gist.github.com/dbb/5373175

1 个答案:

答案 0 :(得分:1)

这可能只是重新绘制屏幕的问题。尝试在您的函数中添加:redraw。如果需要,将!附加到此命令将首先清除屏幕。

function! SetExecutableBit()
  let fname = expand("%:p")
   ...
  execute "au! FileChangedShell " . fname
  redraw
endfunction

:h :redraw