Триггер автокоманды Vim при открытии "ничего"

Я хочу, чтобы vim открывал:Explorer, когда файл не был открыт или создан. Например. когда я звоню vim без каких-либо вариантов.

призвание vim newfile.txt все равно должен вести себя нормально.

Как бы я поступил так? Я не могу найти правильный autocmd для этого.

2 ответа

Решение

Если вы хотите сделать это только для vim-вызовов, лучше всего использовать argc():

autocmd VimEnter * :if argc() is 0 | Explore | endif

argc() Функция возвращает количество имен файлов, указанных в командной строке, когда vim был вызван, если что-то не изменило список аргументов, более подробную информацию можно найти в :h argc(),

Нашел ответ сам:

"open to Explorer when no file is opened
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()

function! OpenExplorer()
    if (TabIsEmpty())
        :Explore
    end  
endfunction

Большая часть этого кода была взята из этого вопроса.

Другие вопросы по тегам