我刚刚发现了文字,我喜欢它。我很想用它作为存储我自己的片段的方式。我知道如何在textmate中做到这一点但是因为我想添加大量的片段,我不希望它们变得杂乱无章。我想将它们添加到相关捆绑下的有组织的子文件夹中。例如,在shell脚本包下我想添加一个文件夹,将我的所有网络片段保存在一起。我无法在任何地方找到如何做到这一点,但我知道它可以完成,因为有些捆绑包是这样组织的......帮助
答案 0 :(得分:2)
我设法通过大量试验和错误来解决这个问题,并从这个超级用户answer开始。
在TextMate 2.0中执行此操作的唯一方法是手动编辑捆绑包的info.plist
文件。我建议在捆绑包的导出副本上执行此操作并将其重新加载到textmate中。要导出包,请右键单击包编辑器中的包,然后单击Export Bundle...
。
首先在plist文件的顶层添加mainMenu
部分:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>mainMenu</key>
<dict>
</dict>
</dict>
</plist>
据我所知,mainMenu
词典支持3个键:excludedItems
,items
和submenus
。 excludedItems
和items
是包含捆绑项(片段,命令等)或子菜单的UUID列表的数组。您可以通过在textmate中打开它并找到uuid
键来获取命令或片段的UUID;它看起来像是:
<key>uuid</key>
<string>0A2DB1AC-3049-4BD5-8931-641E716990F9</string>
获得商品的UUID后,您可以在items
中列出它们,按照您希望的顺序填充捆绑菜单,例如:
<key>items</key>
<array>
<string>409b0e74-9ab5-4d35-b957-9ddf23a71c0c</string>
<string>------------------------------------</string>
<string>d2c991dc-a00e-4247-8479-f2d29f387319</string>
</array>
如果您使用一系列-
字符代替UUID,它将在菜单中创建一个分隔符。同样,如果您不希望在捆绑包的菜单中显示片段,则可以将其添加到excludedItems
。
要创建子菜单,您必须在submenus
内定义它们,如下所示:
<key>submenus</key>
<dict>
<key>71BE58B2-E486-4B21-93F1-C208D4914099</key>
<dict>
<key>items</key>
<array>
<string>6D0B2B9D-62C7-4842-BA28-F3379E887D93</string>
<string>CADC55BD-0D0A-48C8-B296-35FA7AAE09CA</string>
</array>
<key>name</key>
<string>C++ Snippets</string>
</dict>
</dict>
每个子菜单都需要在<key>...</key>
内有一个关联的UUID。我是通过在线UUID generator创建的。然后,您可以将子菜单的UUID添加到顶级items
数组,以将子菜单添加到您的包的菜单中。
最后,当您将捆绑包加载到textmate中时,必须首先从以下位置删除捆绑包的所有缓存实例:
~/Library/Application Support/Avian/Bundles
~/Library/Application Support/Avian/Pristine Copy/Bundles
如果不这样做,textmate有时会忽略新加载的包。不确定是否有更简洁的方法来重新加载捆绑包,但删除它对我有效。
有关完整示例,请参阅我的Github上的ROS包中的this commit。
答案 1 :(得分:1)
关于上面出色答案的一些额外信息
从TM2 rc23开始,您可以通过在捆绑包编辑器窗口(通过cntrl-option-command-B
访问)上右键单击现有项目的UUID
您可以使用命令terminal.app
在uuidgen
中创建UUID(如果经常使用,也可以将其变成命令)
TM2不需要清除缓存-它监视plist中的更改。
@ user96157对此很清楚,但请注意,您还必须将新的子菜单添加到mainMenu中。因此:
<key>mainMenu</key>
<dict>
<key>items</key>
<array>
<string>COPY-UUID-FOR-YOUR-NEW-SUB-MENU-HERE!</string>