乐趣区

关于编程语言:代码的智能输入法帮你每天多写10行代码

作为有着多年教训的复制粘帖工程师,我感觉对于业务开发,参考已有代码来实现新逻辑是很实在的需要,如果能通过含糊的记忆疾速调用出相应的代码段,而不是手动全局搜寻,应该能肯定水平上进步代码输出的效率。

基于这个想法,开发了一个 vscode 插件 Code Finder,欢送应用。

应用成果

类比中文的智能拼音输入法,咱们输出一个词组,只有通过首字母就能找到最罕用的词组。

如果用这种形式输出代码的话,成果是这样的

CodeFinder 是代码的智能输入法,输出大量字符来疾速实现一行或者多行代码。主动提取以后我的项目的所有代码片段,也能够增加自定义代码片段。反对所有编程语言,比方 Javascript, HTML, CSS, Python, Go, PHP, Vue, React …

一些外围逻辑的实现

代码片段的划分

提醒的大部分代码片段来自本地我的项目,所以须要对我的项目源码进行代码片段提取。最开始想从语法和语义来进行分段,发现这是不归路。对于绝大部分编程语言,咱们都会用缩进来表白代码的段落,间接依据代码缩进划分段落就能够了。定义一个简略的规定,前缀空格数量示意层级,低层级的代码行能够和高层级的代码行组成段落。同级的代码行应该属于不同的代码片段。而后递归划分就能够失去各个代码片段了。再聚合雷同的代码片段。

索引和搜寻

实质上,这是一个搜寻的问题。对于输出,能够应用 Trie 树的形式来索引各个代码片段。因为要在本地运行,几十毫秒的工夫内实现搜寻,在代码片段达到一定量级的时候,就可能无奈遍历了,所以引入了剪枝的逻辑,在工夫用完时,抛弃广度遍历过程中匹配状况较差的分支。

跳跃式输出

为了缩小对失常输出的烦扰,就要辨别哪些是惯例输出,哪些是对输入法的调用。所以发明了“跳跃式输出”:空格分隔间断输出多个词,疏忽其余符号。如果应用这种不合乎语法规定的省略输出,阐明是用户被动发动,否则认为是惯例输出。跳跃式输出每次都会提醒,而惯例输出只有在十分匹配的状况下才会提醒。

退出移动版