2010-12-22 7 views
7

¿Cómo es que VIM (cuando se está ejecutando) puede mostrar los contenidos de un archivo al terminal, y luego (cuando está cerrado) puede recuperar lo que se mostró? Ha habido varias aplicaciones que he hecho donde me hubiera gustado implementar esta funcionalidad ... como cuando se hace un programa con gráficos de terminal donde la pantalla entera generalmente tiene que ser actualizada cuando se mueve un único "objeto".¿Cómo se muestra VIM en el terminal y luego lo lleva de regreso?

Respuesta

10

Es su terminal que almacena el buffer anterior, no Vim.

Si usa la emulación XTerm, Vim cambia a la pantalla del terminal "alternativo" al inicio. Al salir, Vim vuelve a la pantalla normal.

cadenas TERMINFO en el inicio:

\E7 saves the cursor's position 
\E[?47h switches to the alternate screen 

cadenas TERMINFO en la salida:

\E[2J clears the screen (assumed to be the alternate screen) 
\E[?47l switches back to the normal screen 
\E8 restores the cursor's position. 
+0

Al menos con XTerm y la pantalla, si el emulador de terminal maneja altscreens es configurable. IIRC está habilitado por defecto en XTerm y deshabilitado por defecto en la pantalla. La consola Linux no tiene manejo de pantalla alts en absoluto. – ephemient

Cuestiones relacionadas