NERDTree保留文件中所有书签的列表$HOME/.NERDTreeBookmarks
。当我点击B它时,会显示该文件中的所有条目。所以我尝试使用该文件的本地副本和项目特定的书签,但这不起作用:(
有没有办法在 NERDTree 中只查看与项目相关的书签?
这是我用于 git repo 特定 NERDTree 书签的内容。
if isdirectory(expand(".git"))
let g:NERDTreeBookmarksFile = '.git/.nerdtree-bookmarks'
endif
由于无法判断项目目录的结构,因此使用 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
正如 timss 已经指出的那样,关键设置是g:NERDTreeBookmarksFile
config 变量。您需要找到一种方法来根据当前打开的项目来操纵该(全局)设置。使用外部环境变量是一种解决方案;我宁愿使用vim.org上提供的本地 vimrc插件之一来解决这个问题;我使用localrc.vim - 自己启用每个目录的配置文件。
在每个不同的项目目录中,您创建一个.local.vimrc
脚本,将上述变量设置为项目的书签文件。(这只有在你在 Vim 中一次只打开一个项目时才能可靠地工作。)