0

NERDTree保留文件中所有书签的列表$HOME/.NERDTreeBookmarks。当我点击B它时,会显示该文件中的所有条目。所以我尝试使用该文件的本地副本和项目特定的书签,但这不起作用:(

有没有办法在 NERDTree 中只查看与项目相关的书签?

4

3 回答 3

4

这是我用于 git repo 特定 NERDTree 书签的内容。

    if isdirectory(expand(".git"))
      let g:NERDTreeBookmarksFile = '.git/.nerdtree-bookmarks'
    endif
于 2015-09-10T19:51:15.753 回答
2

由于无法判断项目目录的结构,因此使用 shell 环境变量似乎是最简单的解决方案。

首先,为您的书签添加路径:

export NERDTREE_BOOKMARKS="/full/path/.NERDTreeBookmarks"

然后将此添加到您的~/.vimrc或类似的:

if !empty($NERDTREE_BOOKMARKS)
    if filereadable($NERDTREE_BOOKMARKS)
        let g:NERDTreeBookmarksFile = $NERDTREE_BOOKMARKS
    endif
endif

根据您的开发方式,使用环境变量可能是也可能不是合适的解决方案。即,如果您一直打开/关闭外壳,或者一次打开多个外壳。

一个更简单的替代方案可能是这样的,但只有在书签所在的目录中使用 vim 打开 vim/a 文件时它才会起作用。

if filereadable(".NERDTreeBookmarks")
    let g:NERDTreeBookmarksFile = ".NERDTreeBookmarks"
endif
于 2013-04-19T05:48:46.527 回答
2

正如 timss 已经指出的那样,关键设置是g:NERDTreeBookmarksFileconfig 变量。您需要找到一种方法来根据当前打开的项目来操纵该(全局)设置。使用外部环境变量是一种解决方案;我宁愿使用vim.org上提供的本地 vimrc插件之一来解决这个问题;我使用localrc.vim - 自己启用每个目录的配置文件

在每个不同的项目目录中,您创建一个.local.vimrc脚本,将上述变量设置为项目的书签文件。(这只有在你在 Vim 中一次只打开一个项目时才能可靠地工作。)

于 2013-04-19T06:15:01.887 回答