当前位置: 首页 > news >正文

对日开发 秀丸文本编辑器 添加文本变换模块

参考资料

  1. 変換モジュール(JavaScript版)作成方法(.hmfjs)
  2. Stdioオブジェクト

目录

  • 一. 秀丸的文本变换功能
  • 二. 编写`自定义变换模块`
  • 三. 添加之后的效果


一. 秀丸的文本变换功能

⏹如下图所示,秀丸编辑器默认提供了很多文本变换的功能。

在这里插入图片描述

⏹可是有些文本的变换需求,官方提供的功能无法满足。
好在秀丸编辑器提供了添加自定义变换模块的功能。

在这里插入图片描述

⏹秀丸编辑器支持的自定义变换模块,共有2种类型

  • .hmf.hmf64
    • 使用C语言编写
    • .hmf支持32位操作系统,.hmf64支持64位操作系统
    • 自秀丸V5.00之后就开始支持
  • .hmfjs
    • 使用javascript语言编写
    • 自秀丸V9.25之后开始支持
    • 目前的Ver9.48版本仅支持ES5的语法,不支持ES6的语法

自定义变换模块中需要有2个函数,如果使用javascript语言编写的话,后缀为.hmfjs

  • enumHidemaruFilter函数
  • hidemaruFilterGetVersion函数

二. 编写自定义变换模块

  • enumHidemaruFilter:指定变换模块的信息
  • hidemaruFilterGetVersion:指定变换模块的版本
  • .stdOut.readAll(5000);:读取外部程序返回的所有文本数据,.readAll()中的参数是超时时间, 单位为毫秒
  • stdio:不显示窗口,有stdIn/stdOut,js实例终了之后,外部程序进程也会随之终了

test.hmfjs:此处演示调用外部的Powershell的脚本代码进行文本处理后,将结果返回

function enumHidemaruFilter(){return [{exportName: "createGrepCmd",nameJapan: "Grepコマンド作成",nameUs: "createGrepCmd",accel: "M",mustLineUnit: true,flags: 0},];  
}function hidemaruFilterGetVersion() { return 0.1;
}// 生成grep命令, 【hidemaruSelectedText】为秀丸编辑器选中的文本
function createGrepCmd(hidemaruSelectedText) {var shellConfig = getShellInfo();var processInfo = hidemaru.runProcess("powershell.exe" + shellConfig.param + shellConfig.path, "", "stdio", "utf8");// 获取标输入对象并传入参数var stdIn = processInfo.stdIn;stdIn.write(hidemaruSelectedText);stdIn.close();// 获取外部程序返回的结果return processInfo.stdOut.readAll(5000);
}function getShellInfo() {return {// 指定指定策略和执行时隐藏窗口param: " -NoProfile -ExecutionPolicy RemoteSigned -WindowStyle Hidden -File ",// 指定脚本的路径path: "E:\\My_Project\\PowerShellStudy\\09-技巧\\18-秀丸.ps1"};
}

18-秀丸.ps1

  • [Console]::InputEncoding = [System.Text.Encoding]::UTF8
    • 指定输入数据的文字编码为utf-8
    • 不指定的话,输入的汉字会乱码
  • [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
    • 指定输出数据的文字编码为utf-8
    • 不指定的话,输出的汉字会乱码
# 设置输入和输出的编码
[Console]::InputEncoding = [System.Text.Encoding]::UTF8
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8# 读取秀丸编辑器传入的数据
[string]$transferData = [Console]::In.ReadToEnd()# 创建字符串拼接对象
$sb = New-Object System.Text.StringBuilder$transferData -split "`r`n" | ForEach-Object {# 跳过空字符串if ([string]::IsNullOrWhiteSpace($_)) {return;}# 处理外部插入的数据$sb.Append("grep -a ^$($_) /路径1/パス2`r`n") | Out-Null
}return $sb.ToString()

三. 添加之后的效果

在这里插入图片描述

http://www.lryc.cn/news/585947.html

相关文章:

  • 聊一聊Spring框架接口测试常见场景有哪些?
  • 学习C++、QT---22(QT中QTextStream库读取文件、写入文件的讲解)
  • docker搭建 与镜像加速器
  • win10安装Rust Webassembly工具链(wasm-pack)报错。
  • C++中Lambda表达式 [ ] 的写法
  • AI 时代的分布式多模态数据处理实践:我的 ODPS 实践之旅、思考与展望
  • 深入解析 Stack 和 Queue:从原理到实战应用
  • 每日算法刷题Day46 7.12:leetcode前缀和3道题和差分2道题,用时1h30min
  • pgsql模板是什么?
  • Redis Geospatial 功能详解及多边形包含判断实现
  • 【JVM|类加载】第三天
  • 专业硬件检测工具 AIDA64 Extreme V7.70.7500 至尊版
  • 12. JVM的垃圾回收器
  • 1. 好的设计原则
  • Java应用全链路故障排查实战指南:从系统资源到JVM深度诊断
  • 钉钉小程序开发环境配置与前端开发指南
  • 【小沐杂货铺】基于Three.JS绘制汽车展示Car(WebGL、vue、react、autoshow、提供全部源代码)
  • 关于 验证码系统 详解
  • Ubuntu安装Jenkins
  • Java文件传输要点
  • 大数据在UI前端的应用深化研究:用户行为数据的时序模式挖掘
  • 前端内容-ES6
  • Java使用Langchai4j接入AI大模型的简单使用(一)
  • 【Linux网络】IP 协议详解:结构、地址与交付机制全面解析
  • 【PTA数据结构 | C语言版】阶乘的递归实现
  • 多线程进阶——JUC的常见类
  • w460实习生管理系统
  • 接口测试及常用接口测试工具总结
  • Springboot aop面向对象编程
  • JavaScript加强篇——第六章 定时器(延时函数)与JS执行机制