等号对齐

许多实用脚本和封装函数, 可以让您编写脚本更加便捷高效

Moderators: tmplinshi, arcticir

aamii
Posts: 47
Joined: 23 May 2014, 03:50

等号对齐

21 Aug 2014, 19:52

喜欢手动修改ini配置,使用Ahk后更如此。
为了直观美观,需要将ini进行等号对齐,试了几款文本编辑器的插件,不理想。用Ahk自编了一个小工具,分享到这里,也许有人用得上。
使用方法:
1、在了解脚本之前,请先备份你的文件,再试用。(或者及时撤销)
2、运行脚本,按F9。
3、你的文本编辑器对ini要用等宽字体,否则效果不明显。推荐Npp
欢迎修正改进。

Code: Select all

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; AHK版本:1.1.15.0.4
; 脚本版本:1.0
; 语言:       中文
; 适用平台:Win7
; 作者:		妖([email protected])
; 脚本类型:实用小工具
; 脚本功能: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
User avatar
huyaowen
Posts: 109
Joined: 28 Jul 2014, 01:15

Re: 等号对齐

21 Aug 2014, 20:45

追着楼主表示感谢。
试了多款记事本软件都不能完美实现,
ahk就是这么迷人,当然楼主爱咪咪更迷人。

谢了。

Return to “脚本函数”

Who is online

Users browsing this forum: No registered users and 17 guests