刷新 Vim 缓冲区

24

我正在编辑HTML文件。 我使用这个键映射来启动Firefox预览页面:

map <F6> :update<CR>:silent !xdg-open %:p<CR>

但是在执行此命令后,Vim窗口变成完全黑色。 我需要滚动每行才能使其再次显示。

因此,我想编写一个刷新缓冲区的函数。这是我所做的:

function! Refresh()                                                                                                                                               
    " code
    set noconfirm
    bufdo e!
    set confirm
endfunction

nmap <F5> :call Refresh()<CR>

我从这篇帖子中得到了这个想法。但它不起作用。


4
如果我按下Ctrl+L,它会重新绘制。 - Stephen Paulger
3个回答

45

按下CtrlL键可以重新绘制屏幕。你也可以使用:redraw命令。

查阅帮助文档以获取更多信息。


重新绘制屏幕并不等同于刷新(重新加载)缓冲区。 - NeilG
怎么刷新缓冲区呢? - me.nkr
怎么刷新缓冲区呢? - undefined

8
如何在您的函数中添加“重绘”功能(与Ctrl-L相同)?
:redr[aw][!]    Redraw the screen right now.  When ! is included it is
                cleared first.
                Useful to update the screen halfway executing a script
                or function.  Also when halfway a mapping and
                'lazyredraw' is set.

由于某些原因,:redr 没有刷新我的屏幕,但按下 CtrlL 可以。不知道为什么。 - TankorSmash
3
如果在结尾处添加一个感叹号,会发生什么呢?例如::redr! - wilkystyle

2
这是我为解决空白屏幕问题而预览HTML文档的绑定代码:
autocmd BufRead *.html map :exe ':silent !open -a /Applications/Firefox.app %':redr! 我喜欢使用"autocmd"进行绑定,因为我可以根据我正在处理的文件类型映射相同的按键来执行各种操作。例如,使用autocmd,我可以将F5键映射到在Firefox中预览html文件,并将相同的F5键映射到js文件上以执行node。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接