2011-08-16 227 views
13

我正在编辑HTML文件。 我用这个键盘映射来启动Firefox预览网页:刷新Vim缓冲区

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

如果我按Ctrl + L重绘。 –

回答

24

使用CtrlL重画屏幕。您也可以使用:redraw

检查help对这些。

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. 
+0

出于某种原因,':redr'没有刷新我的屏幕,但CtrlL没有。想知道为什么。 – TankorSmash

+2

如果您在末尾附加感叹号,该怎么办?例如:':redr!' – wilkystyle

2

这里是我的绑定预览HTML文档与解决空白屏幕问题:

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

我更喜欢使用autocmd进行绑定,因为我可以根据我工作的文件类型映射相同的密钥。例如,使用autocmd我可以将F5映射为在Firefox中预览html文件和在js文件上映射与执行节点相同的密钥F5。