【问题标题】:vim-NERDTree: order bookmarks?vim-NERDTree:订购书签?
【发布时间】:2026-02-04 16:00:02
【问题描述】:

有没有办法订购我在 NERDTree vim 插件中看到的书签?

我觉得这应该很简单,但我不知道该怎么做。我 vim'ed ~/.NERDTreeBookmarks 并看到在那个文件中,书签的顺序是正确的,但它似乎根据我使用它们的顺序不断地重新组织书签——这不是我想要的。我也做了:ReadBookmarks 命令,这似乎并没有改变顺序。

【问题讨论】:

    标签: vim nerdtree


    【解决方案1】:

    我遇到了同样的问题,并设法关闭了 NERDTree 古怪的书签排序。打开NERD_tree.vim 插件文件(通常是~/.vim/plugin/NERD_tree.vim)。搜索此行:

    call s:Bookmark.Sort()
    

    该行应该有两个实例(在 NERDTree 版本 4.2.0 中,它们位于第 209 和 286 行)。通过在它们前面添加" 来注释掉这两行,如下所示:

    "call s:Bookmark.Sort()
    

    现在您可以编辑~/.NERDTreeBookmarks,您的书签将按照与文件中相同的顺序显示在 NERDTree 中。您可以在编辑文件后使用:ReadBookmarks 刷新您的书签列表。

    【讨论】:

    • 耶!我很久以前就放弃了,但我很高兴有人注意到这个问题并回答了它:)
    【解决方案2】:

    作为对 alxm 上述出色答案的更新,这些行已移至新文件中。在我的硬盘上,它位于~/.vim/bundle/nerdtree/lib/nerdtree/bookmark.vim(我使用vundle)。在 vanilla vim 安装中,它很可能位于 ~/.vim/plugin/nerdtree/lib/nerdtree/bookmark.vim

    1。编辑你的书签.vim 文件

    我注释掉了以call sort... 开头的行(第 246 行),如下所示:

    " This is in ~/.vim/<PLUGINDIR>/nerdtree/lib/nerdtree/bookmark.vim
    
    " FUNCTION: Bookmark.Sort() {{{1
    " Class method that sorts all bookmarks
    function! s:Bookmark.Sort()
        let CompareFunc = function("nerdtree#compareBookmarks")
        "call sort(s:Bookmark.Bookmarks(), CompareFunc)
    endfunction
    

    2。退出vim

    退出 vim,因为您想重新加载插件,特别是 NERDTree。

    3。编辑您的 ~/.NERDTreeBookmarks 文件。

    按照您想要的顺序放置它们。NERDTree 现在尊重您的意愿。您庄重、发自内心的书签排序愿望。

    4。再次启动 vim

    当然每个人都已经知道这一点,但我认为这个答案需要第四步。

    【讨论】:

      【解决方案3】:

      不确定从什么时候开始,您现在可以改为设置NERDTreeBookmarksSort

      let g:NERDTreeBookmarksSort=0
      

      然后根据您的需要编辑~/.NERDTreeBookmarks

      查看:help NERDTreeBookmarksSort了解更多详情。

      【讨论】: