2010-11-16 35 views
5

Tôi muốn biết có bao nhiêu cửa sổ đang mở trong trang tab hiện tại từ một hàm Vim; đặc biệt, nó sẽ rất tiện lợi để biết nếu một cửa sổ cụ thể là cửa sổ cuối cùng, ví dụ như từ một autocmd, trong một trang tab. Bất kỳ ý tưởng?Số lượng Windows trong VIM

Trả lời

5

Tôi đoán bạn có thể làm tất cả với lệnh winnr().

winnr() bởi chính nó sẽ cho bạn biết số lượng cửa sổ mà bạn đang xem trong. winnr ('$') cho bạn cửa sổ cuối cùng (đáy)

Sau đây sẽ trở lại '1' nếu bạn đang ở trong cửa sổ phía dưới, và 0 nếu ngược lại:

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

Lấy ví dụ của bạn thì bạn có thể làm điều gì đó như thế này để thực hiện một cái gì đó chỉ trên cửa sổ phía dưới:

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

Caveat: Điều này làm việc tốt cho các cửa sổ dọc, nhưng tôi không nghĩ rằng nó sẽ làm việc ở tất cả cho những người ngang, hoặc trộn và kết hợp các cửa sổ ngang/dọc.

+2

Thực tế theo tài liệu vim (http://vimdoc.sourceforge.net/htmldoc/eval.html#winnr%28%29) winnr ('$') LÀ số lượng cửa sổ trên tab hiện tại. – AmokHuginnsson

4

Bạn cũng có thể làm như sau:

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

Lệnh :windo chạy một lệnh cũ trong mỗi cửa sổ của tab hiện tại của bạn.

+0

winnr ('$') là giải pháp đầy đủ. Bên cạnh đó, mã của bạn sẽ dẫn đến việc chọn các cửa sổ cuối cùng mà hiếm khi được yêu cầu có hiệu lực của việc nhận số cửa sổ. – AmokHuginnsson

Các vấn đề liên quan