为了直观美观,需要将ini进行等号对齐,试了几款文本编辑器的插件,不理想。用Ahk自编了一个小工具,分享到这里,也许有人用得上。
使用方法:
1、在了解脚本之前,请先备份你的文件,再试用。(或者及时撤销)
2、运行脚本,按F9。
3、你的文本编辑器对ini要用等宽字体,否则效果不明显。推荐Npp
欢迎修正改进。
Code: Select all
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; AHK版本:1.1.15.0.4
; 脚本版本:1.0
; 语言: 中文
; 适用平台:Win7
; 作者: 妖(aamii@qq.com)
; 脚本类型:实用小工具
; 脚本功能:INI文件,按等号进行对齐
; 使用方法:打开一个INI,按热键F9,(在试用前,请自行备份原文件)
; 唯一个可变参数是:LimitMax(左侧超过该长度时,该行不参与对齐),根据自己的喜好更改。
; 该参数起限制作用,并非最终起作用的长度。
; 已知缺陷:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
F9::
Send,^a
Send,^c
Sel=%Clipboard%
LimitMax:=30 ;左侧超过该长度时,该行不参与对齐,该数字可自行修改
MaxLen:=0
StrSpace:=" "
Loop,% LimitMax+1
StrSpace .=" "
Aligned:=
loop, parse, Sel, `n,`r ;首先求得左边最长的长度,以便向它看齐
{
IfNotInString,A_loopfield,= ;本行没有等号,过
Continue
ItemLeft :=RegExReplace(A_LoopField,"\s*(.*?)\s*=.*$","$1") ;本条目的 等号 左侧部分
ThisLen:=StrLen(regexreplace(ItemLeft,"[^\x00-\xff]","11")) ;本条左侧的长度
MaxLen:=( ThisLen > MaxLen And ThisLen <= LimitMax) ? ThisLen : MaxLen ;得到小于LimitMax内的最大的长度,这个是最终长度
}
loop, parse, Sel, `n,`r
{
IfNotInString,A_loopfield,=
{
Aligned .= A_loopfield "`r`n"
Continue
}
ItemLeft:=trim(RegExReplace(A_LoopField,"\s*=.*?$") ) ;本条目的 等号 左侧部分
Itemright:=trim(RegExReplace(A_LoopField,"^.*?=") ) ;本条目的 等号 右侧部分
ThisLen:=StrLen(regexreplace(ItemLeft,"[^\x00-\xff]","11")) ;本条左侧的长度
if ( ThisLen> MaxLen ) ;如果本条左侧大于最大长度,注意是最大长度,而不是LimitMax,则不参与对齐
{
Aligned .= ItemLeft "= " Itemright "`r`n"
Continue
}
Else
{
Aligned .= ItemLeft . SubStr( StrSpace, 1, MaxLen+2-ThisLen ) "= " Itemright "`r`n" ;该处给右侧等号后添加了一个空格,根据需求可删
}
}
Aligned:=RegExReplace(Aligned,"\s*$","") ;顺便删除最后的空白行,可根据需求注释掉
clipboard := Aligned
Send ^v
Return