tldr
Too Long; Didn’t Read
偶然间,看到一个比较好用的工具.可以看做是简化版本的man.这个是官网的简介:
A collection of simplified and community-driven man pages.
举个例子,看看tar这个命令的对比
这个是man tar
的截图
再来看看tldr的版本,显然要比man简单明了的多,这么好的功能当然要和Alfred这个神器结合一下.
Alfred Workflow
基本的思路就是把tldr的git仓库clone到本地,然后写个接口来嫁接Alfred的数据格式.直接上代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| package name.chengchao.springrun.service.alfredplugin;
import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap;
import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils;
import name.chengchao.springrun.model.AlfredLine;
public class TLDRService {
private final static String PATH = "/root/tldr/pages/common"; private static List<String> commandList = new ArrayList<String>(); private static ConcurrentHashMap<String, List<AlfredLine>> cache = new ConcurrentHashMap<String, List<AlfredLine>>();
static { init(); }
@SuppressWarnings("unchecked") public static void init() { commandList.clear(); List<File> files = (List<File>) FileUtils.listFiles(new File(PATH), new String[] { "md" }, false); for (File file : files) { commandList.add(StringUtils.substringBefore(file.getName(), ".")); } }
@SuppressWarnings("unchecked") public static List<AlfredLine> search(String action, String keyword) throws Exception { keyword = StringUtils.trim(keyword); List<AlfredLine> list = new ArrayList<>(); int count = 0; boolean bingo = false; for (String command : commandList) { if (command.equalsIgnoreCase(keyword)) { bingo = true; break; } if (command.startsWith(keyword)) { count++; AlfredLine alfredLine = new AlfredLine(); alfredLine.setTitle(command); alfredLine.setSubtitle(""); alfredLine.setArg(""); alfredLine.setAutocomplete(command); list.add(alfredLine); if (count >= 10) { break; } } }
if (bingo) { if (cache.get(keyword) != null) { return cache.get(keyword); }
list.clear(); File file = new File(PATH + "/" + keyword + ".md"); if (file.exists()) { List<String> lines = FileUtils.readLines(file); AlfredLine alfredLine = null; for (String line : lines) { if (line.startsWith("-")) { if (alfredLine != null) { list.add(alfredLine); } alfredLine = new AlfredLine(); alfredLine.setSubtitle(line.substring(1, line.length() - 1)); } else if (line.startsWith("`") && alfredLine != null) { alfredLine.setTitle(line.substring(1, line.length() - 1)); alfredLine.setArg(line.substring(1, line.length() - 1)); }
} if (alfredLine != null) { list.add(alfredLine); }
cache.put(keyword, list); } } return list; } }
|
看看效果