最近在用 Ubuntu, 感觉好多时候都在找自己某个地方写过的代码片段, 各个文件夹下翻. 心塞. 要是可以把所有代码放到一个文件夹, 然后用 grep (我一般无脑用 pt
) 搜, 然后能直接取出来就好了. (人懒, 而且记忆力捉急)
有这个需求, 就用自己喜欢的 pt
(代码搜索), percol
(动态搜索) 以及一些 shell 脚本弄了一个 snippet manager, 基本满足了自己的需求.

使用前需要安装
这两个工具安装起来的都比较容易. pt 有二进制, percol 用 pip 就能装. 还有一些依赖, 比如 perl, sed, 系统都自带了 (windows 上装了 git 也就有了 perl, 虽然我最近没有 windows 能测).
使用的时候需要先进入你的 snippets 文件夹, 然后使用 sm <keyword>
, 它会调用 pt 去搜整个文件夹的文本 (不会搜索 .git
之类的目录), 然后用 percol 你可以动态再过滤一遍, 过滤完了之后, 它会把你选中行的那个文件打印出来. 这个 snippets 文件夹不是本 repo 的那个文件夹, 实际上系统的任何一个目录都可以用它来搜索.
添加 snippet 用 vi snippets/xxx.cpp
, 修改 snippet 用 vism <keyword>
, 你最终选中的那个文件会被打开.
搜索用的 keyword 是 smart case, 就是说你如果输入小写, 就是大小写无关; 如果有大写字母, 就是大小写敏感的.
还可以使用 sm <keyword> -G cpp
来指定只搜索 cpp 格式的代码片段.
用 csm
复制到剪切板.
更多还是看代码: https://github.com/district10/snippet-manager/blob/master/sm.sh
网友评论