在VIM中,当给出参数时,如何使NERDTree在启动时很好地打开
让我解释一下我的问题,我想做的是: 在不带参数调用gvim的命令行中,希望默认情况下在my/home/user/Documents文件夹中打开NERDTree 从命令行调用gvim。要打开NERDTree,将目录设置为执行命令的实际目录。但我仍然希望NERDTree在左边,而不是NERDTree像往常一样成为唯一的窗口 从调用gvim/some/path/to/folder的命令行中,您希望打开目录设置为给定目录的NERDTree。但我仍然希望NERDTree在左边,而不是NERDTree像往常一样成为唯一的窗口 使用参数调用gvim时: 如果是文件,不要打开NERDTree,只打开文件。 如果它是一个目录,NERDTree应该像3一样工作 为了解决问题1,我有: 我想解决第2和第3个问题的是: 但它不工作,它给我错误和维姆冻结一些时候。我能做些什么来达到预期的效果 谢谢你的帮助 完全解 没有完全按照我的预期工作,但非常接近。到目前为止,上帝在VIM中,当给出参数时,如何使NERDTree在启动时很好地打开,vim,args,nerdtree,Vim,Args,Nerdtree,让我解释一下我的问题,我想做的是: 在不带参数调用gvim的命令行中,希望默认情况下在my/home/user/Documents文件夹中打开NERDTree 从命令行调用gvim。要打开NERDTree,将目录设置为执行命令的实际目录。但我仍然希望NERDTree在左边,而不是NERDTree像往常一样成为唯一的窗口 从调用gvim/some/path/to/folder的命令行中,您希望打开目录设置为给定目录的NERDTree。但我仍然希望NERDTree在左边,而不是NERDTree像往常
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
我无法为您提供完整的解决方案,但这里有一个提示可以解决这些错误: :NERDTree命令接受一个可选目录;这无法解析表达式。Vim的求值规则与大多数编程语言不同。您需要使用:execute以计算变量或表达式;否则,它是字面意义上的;i、 Vim使用变量名本身作为参数。因此,改变这一点:
NERDTree expand(getcwd())
进入:
我还省略了expand,因为getcwd已经返回了完整路径
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
NERDTree expand(getcwd())
execute 'NERDTree' getcwd()