2014-01-05 22 views
2

我正在通过Learn Vimscript the Hard Way" by Steve Losh工作。在第32章中,我们构建了一个将结果放入quickfix窗口的grep命令。它看起来像这样:Vim grep导致字符暂时消失

:nnoremap <leader>g :silent :exe "grep! -R " . shellescape(expand("<cWORD>")) . " ."<cr>:copen<cr> 

它基本上工作,但是当我运行它时,它会导致字符变得(暂时)不可见。如果我关闭并重新打开文件,角色会回来。另外,如果我搜索不可见字符,它们就会出现。

例如,如果我运行与我的光标上``thedude“的命令”文本的这样一个块上:

[email protected] 
print foo(bar) 
print foo(bar) 

两个``打印了foo(bar)“”线变得不可见。有人可以猜测为什么会发生这种情况吗?我在OSX Mountain Lion上使用系统默认的Vim v7.3。

+1

我猜想它与您的终端设置或您正在使用的终端仿真有关。你可以尝试一个不同的终端吗?此外,看看是否按Ctrl-L帮助,因为这会重画屏幕。 –

+0

它发生在苹果终端和XQuartz X11终端。 Ctrl-l会恢复不可见的文本。 –

+0

我看到同样的事情。简化一下,我用':grep! -R'thedude'.'。正如预期的那样,它爆发出来,但它似乎挂了。没有'-R'标志,我会立即得到一个'按ENTER键或输入命令以继续'提示。 – benjifisher

回答

4

当使用外部命令和:silent命令时,有时会发生这种情况。您可以在倒数第二段的:help :silent中阅读。在那里它告诉你可以在执行命令后使用重画屏幕或使用CTRL-L手动清除屏幕来解决问题。

:nnoremap (yadda yadda):copen<cr>:redr!<cr>