• 在neovim/vim中搜索所有的markdown标题


    这件事, 从我渐渐用nvim取代了obsidian, 就盼望有一天, 能像obsidian的某一个插件能做到的, 在vim中搜索所有的markdown headings, 这也是我觉得nvim体验不如obsidian几个地方之一(另一个当然是preview, 再另一个是创建link没那么方便, 虽然写了插件, 但还是需要先跳转到那个文件才能创建, 而不是obsidian自动提示补全).
    现在, 我好像做到了这件事. 在2个极其好用的插件的帮助下(可能某一天我会觉得不再好用, 但是, 当下它就是最好用的, 先享受吧).
    一个, 是fzf.vim, 一个是gutentags.vim.

    大概来说这两个插件各做了什么事, 以达到这个目的.
    fzf.vim提供了:Tags命令, 可以查找所有的tag.
    而ctags, 支持markdown, 能生成heading的tag.
    这样我们就能查找标题.
    但有一个问题, 使得这种方案不太可行. ctags并非增量式的, 一个vault可能很大, 我只不过有几百个markdown文件, 执行ctags就感觉要几十秒. 这样, 重新生成tags就需要很久. gutentags, 是增量式的, 而且默默帮你生成好tags, 不需要自己再执行ctags命令. gugentags唯一需要注意的设置, 只有g:gutentags_project_root.

    gutentags并非没有缺点, 我感觉, 由于它是纯vimscript实现, 速度比较慢, 这个问题倒不大, 由于是异步的, 一般不会有什么感觉. 如果用lua改写, 可能速度会快不少.

    作为一个善良的人, 把config也贴出来:

    let g:gutentags_add_default_project_roots = 0
    let g:gutentags_project_root = ['.gutentags_markdown', '.gutentags']
    let g:gutentags_file_list_command = {
        \ 'markers': {
            \ '.gutentags_markdown': 'ls *.md',
            \ },
        \ }
    let g:gutentags_cache_dir = "填你想给的目录, 不想暴露本人电脑信息"
    

    不过你可能会对gutentags有点困惑, 要是有困惑, 看看这个链接.

    还是忍不住想展示一下这个功能有多么好用:

    这是在单个文件.
    所有文件是:

    更棒的是, 这个预览还可以往下滑动.
    如果之前的两个功能最多只能和obsidian算平手, 预览这一点, 就可以说这种方法已经胜过obsidian了.

  • 相关阅读:
    Swift协议+代理
    socket编程详解
    Sublime Text 3下 Emmet 使用小技巧
    sublime text3 针对于前端开发必备的插件
    Emmet使用手册
    使用Emmet(前身Zen Coding)加速Web前端开发
    Emmet的高级功能与使用技巧
    RSS订阅推荐
    UIView中常见的方法总结
    技术博客rss订阅源收集
  • 原文地址:https://www.cnblogs.com/Tokubara/p/15934991.html
Copyright © 2020-2023  润新知