刷新Vim缓冲区

时间:2011-08-16 12:57:41

标签: vim

我正在编辑HTML文件。 我使用这个keymap启动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>

我从这个post得到了这个想法。 但它不起作用。

3 个答案:

答案 0 :(得分:27)

使用 Ctrl L 重绘屏幕。您也可以使用:redraw

检查这些help

答案 1 :(得分:7)

如何添加“重绘”功能(与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.

答案 2 :(得分:2)

这是我用于预览解决空屏幕问题的HTML文档的绑定:

autocmd BufRead *.html map <F5> :exe ':silent !open -a /Applications/Firefox.app %'<CR>:redr!<CR>

我更喜欢使用autocmd进行绑定,因为我可以根据我正在使用的文件类型为各种事物映射相同的键。例如,使用autocmd我可以映射F5以在html文件中预览Firefox中的文档并在js文件上映射相同的密钥F5以执行节点。