Проверьте, пуста ли текущая вкладка в vim - PullRequest
5 голосов
/ 17 февраля 2011

Я пишу плагин vim, в котором мне нужно проверить, пуста ли текущая вкладка, на которую смотрит пользователь.Если он не пустой, как, например, пользователь уже просматривает буфер или у него есть пара окон, то я хочу создать новую пустую вкладку и поработать там с моим плагином.Но если он пуст, я хочу загрузить свой плагин, не открывая новую вкладку.

Я не смог найти ничего подходящего в документации, поэтому кто-нибудь знает, как это сделать?* Спасибо.

Ответы [ 3 ]

4 голосов
/ 17 февраля 2011

Единственное, что я могу придумать для этого, это использовать :windo, чтобы перебрать все окна в текущей вкладке и проверить, загружен ли файл. Как то так:

function! TabIsEmpty()
    " Remember which window we're in at the moment
    let initial_win_num = winnr()

    let win_count = 0
    " Add the length of the file name on to count:
    " this will be 0 if there is no file name
    windo let win_count += len(expand('%'))

    " Go back to the initial window
    exe initial_win_num . "wincmd w"

    " Check count
    if win_count == 0
        " Tab page is empty
        return 1
    else
        return 0
    endif
endfunction

" Test it like this:
echo TabIsEmpty()

" Use it like this:
if TabIsEmpty() == 1
    echo "The tab is empty"
else
    echo "The tab is not empty"
endif

Если открыта только страница справки, окно предварительного просмотра или что-то в этом роде, вероятно, он вернет 1, поскольку я не думаю, windo работает над ними.

3 голосов
/ 06 апреля 2013

Может быть, я не понимаю вопроса, но чтобы проверить, нет ли у вкладки буфера, сделайте следующее:

if bufname("%") == ""
3 голосов
/ 18 марта 2012

Предположим, что на вкладке несколько окон, но все буферы окон пусты.

Возможно, вы хотите сказать, что эта вкладка НЕ ​​пуста.Если это так, нам не нужно просматривать все вкладки.Будет работать следующее.

function! TabIsEmpty()
    return winnr('$') == 1 && len(expand('%')) == 0 && line2byte(line('$') + 1) <= 2
endfunction
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...