Триггер автокоманды 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
Большая часть этого кода была взята из этого вопроса.