【嵌入式工具】Keil自制格式化插件

本文介绍了如何为Keil开发一个插件,利用Python编写脚本实现自动删除代码中的行尾空格和多余的文件末尾空行。通过pyinstaller将Python脚本转换为可执行程序,并在Keil的工具菜单中配置运行。该方法提供了一种在Keil这种不支持py脚本的环境中扩展其功能的方式。
摘要由CSDN通过智能技术生成

1 前期教程

2 前言

  上面的前期教程当中,对keil的下载,安装以及配置都讲得非常清楚了,但是最近遇到一个问题,那就是网上找的代码非常杂乱,即使使用AStyle插件对其进行格式化之后,行尾空格或者文件末尾空行仍然消除不掉,让强迫症的我非常不适,因为我非常喜欢VSCode中保存文件即删除行尾空格和文件末空行的设置,于是就想给Keil这个“上古编辑器”也整一个。

3 keil插件制作

  好在Keil虽然样式老,但还支持插件扩展功能,因此可以自己写一个插件来实现想要的功能,不过首先需要对插件运行原理有一个基本的了解。

  插件设置在菜单栏Tools中:
在这里插入图片描述

在这里插入图片描述

这个界面非常简单,就是三个框设置:运行指令(点击按钮执行的是哪个指令),初始位置(指令执行时所在的位置,可能涉及到当前文件夹的问题),参数(指令运行时需要添加的参数);右边三个复选框,其中Run Minimized是指运行时不产生黑框(如果有的话),Prompt for Argument字面意思理解应该是会弹出参数输入的提示,没用过,Run Independent,独立运行,也没用过。
  重点是参数部分,!E表示当前编辑的文本文件;$E表示当前编辑的文本文件所在的文件夹。其他的就不怎么常用了。

其他更多指令建议参考这篇文章


  OK,理解了基本逻辑,现在就可以开始制作插件,使用的编程语言是最熟悉的python,但是由于这里的Command不支持py脚本,还需要自己导出成执行程序,使用的是pyinstaller这个包。

【Python】pyinstaller完整使用教程

  我想要实现的功能主要是删除每一行的行尾空格以及文件末尾的多余空行(只保留一个空行),代码如下:

## format.py
import chardet, sys, glob

def format_file(filename, default_encoding='gb2312'):
    '''	@func: 去除文件末空白行, 去除行尾空格
        @para	filename:文件名; default_encoding:默认编码
        @return: None
    '''
    try:
        content = open(filename, 'rb').read()  # 以字节方式读取
    except:
        print("文件"+filename+"打开失败")
    source_encoding = chardet.detect(content)['encoding']
    string = content.decode(source_encoding if source_encoding else default_encoding, 'ignore')
    out = "\n".join(map(str.rstrip, string.rstrip().splitlines())) #删除文件末空行,并去除行尾空格
    out = out + "\n"  #行尾加一行空行
    if out == string:
        print("文件"+filename+"不需要格式化")
        return
    with open(filename, 'w') as f:
        f.write(out)
    print("文件"+filename+"格式化完成")

if __name__ ==  "__main__":
    try:
        filename = sys.argv
        filelist = sum(list(map(glob.glob, filename[1:])), []) #获取所有文件名
        # print(filelist)
        list(map(format_file, filelist))
    except Exception as e:
        print(str(e))
        # print("参数传入错误或没有传入参数")

然后再使用pyinstaller将脚本导出成执行程序:

pyinstaller -Fw ./format.py

参数可以按照下面这张图设置,实现的是一个文件夹中所有.c.h文件都格式化:

在这里插入图片描述

4 其他教程

  • kei的几个插件——个人觉得这几个插件都意义不大,因为这几个功能可以用 快速模板 一定程度上代替,而且插件会删除掉更改历史记录,即不能撤回,不是很方便。
  • 改变文件可读属性——这个有点意思,使用的指令不是执行程序,而是bat文件,且内容比较全面。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记录无知岁月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值