Позвольте мне объяснить, на мой вопрос, что я хочу сделать, это:В VIM, как сделать NERDTree открытым при запуске красиво, давая арг
Из командной строки вызывающей
gvim
без аргументов, хочу NERDTree открыть по умолчанию в моей папке/home/user/Documents
.Из командной строки, вызывающей
gvim .
, нужно открыть NERDTree с каталогом, установленным в фактический каталог, из которого была выполнена команда. НО я все еще хочу, чтобы NERDTree слева и пустой буфер справа (а не NERDTree, являющееся единственным окном, как обычно бывает).Из командной строки, вызывающей
gvim /some/path/to/folder
, нужно открыть NERDTree с каталогом, заданным для данного каталога. НО я все еще хочу, чтобы NERDTree слева и пустой буфер справа (а не NERDTree, являющееся единственным окном, как обычно бывает).При вызове
gvim
с аргументом:- Если это файл, не открывайте NERDTree только файл.
- Если это каталог NERDTree должен работать как
#3
Для решения #1
у меня есть:
function! StartUp()
if 0 == argc()
NERDTree ~/Documents
endif
endfunction
autocmd VimEnter * call StartUp()
autocmd VimEnter * wincmd p
То, что я думал обратиться #2
и #3
был:
function! StartUp()
if 0 == argc()
NERDTree ~/Documents
else
if argv(0) == '.'
NERDTree expand(getcwd())
else
NERDTree expand(argv(0))
endif
endif
endfunction
autocmd VimEnter * call StartUp()
autocmd VimEnter * wincmd p
Но это не сработает, это дает мне ошибки, и vim замерзает несколько раз. Что я могу сделать для достижения желаемого эффекта?
Благодарим за помощь.
Комплексное решение
Не работает точно так, как я ожидал, но это очень и очень близко. Пока что бог.
function! StartUp()
if 0 == argc()
NERDTree ~/Documents
else
if argv(0) == '.'
execute 'NERDTree' getcwd()
else
execute 'NERDTree' getcwd() . '/' . argv(0)
endif
endif
endfunction
autocmd VimEnter * call StartUp()
autocmd VimEnter * wincmd p
Спасибо, что это была очень хорошая подсказка! –