2010-11-16 5 views
5

Me gustaría saber cuántas ventanas están abiertas en la página de pestañas actual de una función Vim; en particular, sería útil saber si una ventana en particular es la última, por ejemplo, de un autocmd, en una página de pestañas. ¿Algunas ideas?Número de ventanas en VIM

Respuesta

5

Supongo que puede hacerlo todo con el comando winnr().

winnr() por sí mismo le indica el número de la ventana que se encuentra actualmente. winnr ('$') le indica la última ventana (parte inferior)

La siguiente volvería '1' si estuviera en el ventana inferior, y 0 en caso contrario:

echo winnr() == winnr('$') 

Tomando su ejemplo, usted podría entonces hacer algo como esto para ejecutar algo que sólo en la ventana inferior:

:autocmd WinEnter * if winnr() == winnr('$')|echo "Welcome to the bottom window"|endif 

Advertencia: funciona bien para ventanas verticales, pero no creo que funcione para las horizontales, ni para mezclar y combinar ventanas horizontales/verticales.

+2

En realidad según la documentación de vim (http://vimdoc.sourceforge.net/htmldoc/eval.html#winnr%28%29) winnr ('$') ES el número de ventanas en la pestaña actual. – AmokHuginnsson

4

También podría hacer lo siguiente:

let window_counter = 0 
windo let window_counter = window_counter + 1 
echo window_counter 

El comando se ejecuta :windo un ex comando en cada ventana de la pestaña actual.

+0

winnr ('$') es una solución suficiente. Además, su código dará como resultado la selección de las últimas ventanas, lo que rara vez se requiere como resultado del recuento de ventanas. – AmokHuginnsson

Cuestiones relacionadas