刷新Vim缓冲区

刷新Vim缓冲区,vim,Vim,我正在编辑HTML文件。 我使用此键图启动firefox预览页面: map <F6> :update<CR>:silent !xdg-open %:p<CR> map:update:silent!xdg开放%:p 但在执行此命令后,Vim窗口将完全变黑。 我需要滚动每一行,使它再次出现 所以我想写一个函数来刷新缓冲区。以下是我所做的: function! Refresh()

我正在编辑HTML文件。 我使用此键图启动firefox预览页面:

map <F6> :update<CR>:silent !xdg-open %:p<CR>
map:update:silent!xdg开放%:p
但在执行此命令后,Vim窗口将完全变黑。 我需要滚动每一行,使它再次出现

所以我想写一个函数来刷新缓冲区。以下是我所做的:

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

nmap <F5> :call Refresh()<CR>
函数!刷新()
“代码
不确认
好极了!
设定确认
端功能
nmap:调用刷新()
我从中得到了这个想法。 但它不起作用。

使用CtrlL重新绘制屏幕。您也可以使用
:redraw

检查这些选项。

添加一个“重画”执行您的函数(与ctrl-L的作用相同)怎么样


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

autocmd BufRead*.html映射:exe”:静默!打开-a/Applications/Firefox.app%':redr!


我更喜欢使用
autocmd
进行绑定,因为我可以根据我使用的文件类型为不同的内容映射相同的键。例如,使用autocmd,我可以在html文件上映射用于在Firefox中预览文档的F5,在js文件上映射用于执行节点的相同键F5。

如果我按Ctrl+L,它会重新绘制。出于某种原因,
:redr
没有刷新我的屏幕,但CtrlL刷新了。不知道为什么。如果在末尾添加感叹号会怎么样?示例:
:redr!
: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.