Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VIM中,当给出参数时,如何使NERDTree在启动时很好地打开_Vim_Args_Nerdtree - Fatal编程技术网

在VIM中,当给出参数时,如何使NERDTree在启动时很好地打开

在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像往常

让我解释一下我的问题,我想做的是:

在不带参数调用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个问题的是:

但它不工作,它给我错误和维姆冻结一些时候。我能做些什么来达到预期的效果

谢谢你的帮助

完全解 没有完全按照我的预期工作,但非常接近。到目前为止,上帝

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()