显示相对于项目/目录的NERDTree书签

时间:2013-04-19 05:22:57

标签: vim nerdtree

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

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

3 个答案:

答案 0 :(得分:4)

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

    if isdirectory(expand(".git"))
      let g:NERDTreeBookmarksFile = '.git/.nerdtree-bookmarks'
    endif

答案 1 :(得分:2)

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

首先,添加书签的路径:

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

然后将其添加到您的~/.vimrc或类似内容中:

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

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

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

if filereadable(".NERDTreeBookmarks")
    let g:NERDTreeBookmarksFile = ".NERDTreeBookmarks"
endif

答案 2 :(得分:1)

正如timss已经指出的那样,关键设置是g:NERDTreeBookmarksFile配置变量。您需要找到一种方法来操作该(全局)设置,具体取决于当前打开的项目。使用外部环境变量是一种解决方案;我希望使用vim.org上提供的本地vimrc 插件之一来解决这个问题。我自己使用localrc.vim - Enable configuration file of each directory

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