2010-11-16 12 views
5

Ich würde gerne wissen, wie viele Fenster in der aktuellen Registerkarte von einer Vim-Funktion geöffnet sind; Insbesondere wäre es hilfreich zu wissen, ob ein bestimmtes Fenster das letzte ist, z. B. von einem autocmd, in einer Registerkarte. Irgendwelche Ideen?Anzahl der Windows in VIM

Antwort

5

Ich schätze, Sie können alles mit dem Befehl wnrr() tun.

winnr() selbst das Fenster Nummer sagt sind Sie derzeit in. winnr (‚$‘) sagt Ihnen, die letzte (unten) Fenster

Die folgende zurückkehren würde ‚1‘, wenn Sie in der waren Bodenfenster, und sonst 0:

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

Ihr Beispiel nehmen könnte man dann etwas tun, so etwas auf dem unteren Fenster nur auszuführen:

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

Vorbehalt: Das funktioniert gut für vertikale Fenster, aber ich glaube nicht, dass es für horizontale oder horizontale/vertikale Fenster funktioniert.

+2

Eigentlich nach vim Dokumentation (http://vimdoc.sourceforge.net/htmldoc/eval.html#winnr%28%29) ist wnrr ('$') die Anzahl der Fenster auf der aktuellen Registerkarte. – AmokHuginnsson

4

Sie könnten auch folgendes tun:

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

Der :windo Befehl wird ein Ex-Befehl in jedem Fenster der aktuellen Registerkarte.

+0

wnrr ('$') ist ausreichende Lösung. Außerdem wird Ihr Code dazu führen, dass die letzten Fenster ausgewählt werden, was nur selten den Effekt der Fensteranzahl erfordert. – AmokHuginnsson

Verwandte Themen