大家是如何管理跨编辑器的 snippet 的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hikerpig
V2EX    程序员

大家是如何管理跨编辑器的 snippet 的?

  •  
  •   hikerpig 2019-12-19 13:48:02 +08:00 4350 次点击
    这是一个创建于 2175 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前使用 vim 的时候,写了好些 UltiSnips 的代码片段,现在多数时候在用 vscode,把以前的 snippet 全转移过来是在有点费劲。

    想问大家,有没有一站式的 snippet 管理或者转换方案,写一次 snippet 各个编辑器都能用的?基本上 snippet 语法只需要支持简单的变量替换就可以。

    据大家说 Dash 的 snippet 管理很好用,还有 TextExpander 之类的,我没试过。一是这二者都是 Mac 上的付费软。二是我比较倾向于使用编辑器自己生态下的 expander 相关机制或插件(UltiSnips 之于 Vim, yas 之于 Emacs,vscode 和 atom 自己的 snippet 管理之类),所以只想找一个 snippet 文件管理和语法互转的方案。

    第 1 条附言    2019-12-19 16:16:12 +08:00
    感谢大家的回答,我细化说明一下问题。

    在我看来 snippet 管理有两大类:

    1. 有用的静态片段,用于收集并理解一段功能代码 /奇技淫巧 /代码示例,例如 Gist/Lepton/gistbox/SnippetLab 等都可以达到,主要是编程经验的积累。

    2. 常用的动态片段,相当于模板,带有占位符,也许可以有类似于 @time 之类自动展开的功能。

    这个问题主要想寻求的是 2 的一站解决方案。
    18 条回复    2019-12-20 11:04:35 +08:00
    coderQiQin
        1
    coderQiQin  
       2019-12-19 14:15:19 +08:00
    gitsbox
    TabGre
        2
    TabGre  
       2019-12-19 14:15:51 +08:00
    现在用 alfred
    hikerpig
        3
    hikerpig  
    OP
       2019-12-19 15:29:50 +08:00
    @coderQiQin gistbox 似乎没有变量展开的功能?我感觉它和 gist 一样,比较适合做一个既定代码片段的说明。
    BBCCBB
        4
    BBCCBB  
       2019-12-19 15:33:21 +08:00
    楼主,这是个挣 star 的好机会, 靠你写个这种插件了!!
    GoLand
        5
    GoLand  
       2019-12-19 15:54:37 +08:00
    有个叫 SnippetsLab 的软件,挺好用。
    hikerpig
        6
    hikerpig  
    OP
       2019-12-19 16:10:36 +08:00
    @GoLand 看了眼 setapp 里有。但还是和 gistbox 相似的问题,与我寻求的 expandable snippets 不太 match。
    jdhao
        7
    jdhao  
       2019-12-19 16:18:04 +08:00 via Android
    楼主可以贴一下自己的 vim snippets 嘛
    alexzuo
        8
    alexzuo  
       2019-12-19 16:32:51 +08:00
    dash 好像有这个功能
    hikerpig
        9
    hikerpig  
    OP
       2019-12-19 18:59:49 +08:00
    刚发现了有个国人写的 vscode 插件 https://github.com/corvofeng/Vsnips,可以部分解决我的问题(现在在 osx 下由于一个小问题会报错,暂时用不了)。
    hikerpig
        10
    hikerpig  
    OP
       2019-12-19 19:04:58 +08:00
    @jdhao 其实也没啥哈哈哈,一些鸡毛蒜皮的博客 md 文件开头模板,代码分块注释等零碎的东西。

    UltiSnips 默认给出的 snippet 里,可以运行 python 函数,倒是挺诱人的
    corvofeng
        11
    corvofeng  
       2019-12-19 20:30:02 +08:00 via Android
    @hikerpig 不好意思平时没有 Mac, 可以提个 issue 吗, 我看看能不能解决
    hikerpig
        12
    hikerpig  
    OP
       2019-12-19 21:09:00 +08:00 via Android
    @corvofeng 哈哈哈大佬现身,我下午就提了,还扔了个截图
    zhuangzhuang1988
        13
    zhuangzhuang1988  
       2019-12-19 21:31:24 +08:00
    几年能切换多少次编辑器
    hikerpig
        14
    hikerpig  
    OP
       2019-12-19 21:41:01 +08:00 via Android
    @zhuangzhuang1988 骑墙党流下了不争气的眼泪。要说其实总共也没多少 snippet,但有两个编辑器切着用的话新加一个片段要写两次,而且格式完全不同还是挺烦的。
    搜了一圈发现的确没啥统一的方案,估计需求略小众。
    更一体化和小白友好的就是各种像 alfred 一样直接与与系统交互的应用了。
    xudaolong
        15
    xudaolong  
       2019-12-19 21:52:48 +08:00
    用我写得 codeexpander (#^.^#)
    xudaolong
        16
    xudaolong  
       2019-12-19 21:54:24 +08:00
    我写得 codeexpander 完全符合你得要求 而且同步 gist 去中心化
    impony
        17
    impony  
       2019-12-20 09:12:09 +08:00
    Dash
    hikerpig
        18
    hikerpig  
    OP
       2019-12-20 11:04:35 +08:00
    Vsnips 在 OSX 上修好了,当前阶段问题解决。

    看了一圈的感觉是,写一个 snippet 解释引擎应该不是个很费力的事情,所以现在不同的插件作者都喜欢自己撸一套,顺带加上自己的喜好需求以及对应编辑器的一些独特功能。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1161 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 21ms UTC 23:38 PVG 07:38 LAX 15:38 JFK 18:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86