2011-08-16 14 views
13

Estoy editando archivos HTML. utilizo este mapa de teclas para lanzar Firefox para previsualizar la página:Refresh Vim buffer

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

Pero después de este comando, la ventana de Vim se vuelve completamente negro. Necesito desplazarme por todas las líneas para que aparezca nuevamente.

Así que quiero escribir una función para actualizar el búfer. Esto es lo que hice:

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

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

Me surgió la idea de este post. Pero no funciona.

+3

Si presiono Ctrl + L se vuelve a dibujar. –

Respuesta

24

Uso CtrlL a redibujar la pantalla. También puede usar :redraw.

Compruebe el help en estos.

7

Cómo sobre la adición de un "redibujo" hacer su función (que hace lo mismo que 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

por algún motivo, ': redr' no actualizó mi pantalla, pero CtrlL sí. Preguntarse por qué. – TankorSmash

+2

¿Qué sucede si agrega un signo de exclamación hasta el final? Ejemplo: ': redr!' – wilkystyle

2

Aquí está mi fijaciones para previsualizar documentos HTML con el problema de la pantalla vacía resuelto:

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

Prefiero usar autocmd para enlaces, porque puedo asignar la misma clave para varias cosas dependiendo del tipo de archivo en el que estoy trabajando. Por ejemplo, con autocmd puedo asignar F5 para obtener una vista previa del documento en Firefox en html-files y mapear la misma clave F5 en js-files para ejecutar el nodo.