标签 UltraEdit 下的文章

UltraEdit宏一枚

有如下文本内容,需要在每个[code]前面添加上从下往上查找的最近的一个日期:

[2011.12.12]
    [code]item 1
    [code]item 2
    [code]item 3
    [code]item 4
    [code]item 5
    [life]item fdsa
    [code]item fzzz
    [code]item fsa
    [code]item fsa
    [shit]fsafdsafdsa
    [code]fdsafdsafd
[2011.12.13]
    [life]fdsafdsaf
    [code]fdsafdsaf
    [fuck]fdsafdsaf
    [code]fdsafdsaf

使用如下宏:(注:运行宏之前将光标移动到第一行,宏内容中的“X箭头”是安装中文版UltraEdit的内容,如果是其他语言版本可能不同。比如英文版“右箭头”就是“RIGHT ARROW”。使用中文版UE写RIGHT ARROW会报宏语法错误。这一点比较坑爹。既然会想到用宏的人,宏脚本还搞本地化就比较蛋疼了。)

InsertMode
ColumnModeOff
HexOff
Find "  [code]"
ToggleBookmark
IfFound
Find Up "[201"
StartSelect
Key 右箭头
Key 右箭头
Key 右箭头
Key 右箭头
Key 右箭头
Key 右箭头
Key 右箭头
Key 右箭头
EndSelect
Copy
Clipboard 0
GotoBookMark 1
Key 右箭头
Paste
EndIf
ToggleBookmark

运行宏之后的文本内容变为:

[2011.12.12]
    [2011.12.12][code]item 1
    [2011.12.12][code]item 2
    [2011.12.12][code]item 3
    [2011.12.12][code]item 4
    [2011.12.12][code]item 5
    [life]item fdsa
    [2011.12.12][code]item fzzz
    [2011.12.12][code]item fsa
    [2011.12.12][code]item fsa
    [shit]fsafdsafdsa
    [2011.12.12][code]fdsafdsafd
[2011.12.13]
    [life]fdsafdsaf
    [2011.12.13][code]fdsafdsaf
    [fuck]fdsafdsaf
    [2011.12.13][code]fdsafdsaf

UltraEdit未知文件后缀名自动语法高亮

这几天在学cakephp框架出现了一个问题,我使用的编辑器是ultraedit, cakephp在基于mvc的理念来开发的,其中用来写视图(view)的文件不是默认的.php后缀,而是.ctp (cakephp template pages) 后缀。这样在ultraedit打开ctp文件的时候,貌似ultraedit不是根据文件内容来判定这是一个用了啥语言的源代码,最后找到了答案:进入“高级”->"配置"->"编辑器显示"->"语法高亮" :

UltraEdit未知文件后缀名自动语法高亮

所有关于语法高亮的定义的文件都保存在d:appue32wordfiles ,这个路径是我以前自定义的,默认应该是系统用户application data目录,下面的语言选择PHP ,打开, 就会打开php.uew文件,转到第一样看到 如下代码:

UltraEdit未知文件后缀名自动语法高亮

File Extensions 就是定义了哪些后缀需要当php语法格式高亮,在后面加入ctp就达到目的了,其他可以举一反三。

UltraEdit用宏删除#开头的行并删除空行

这几天在倒腾Apache的httpd.conf,众所周知默认的httpd.conf有很多#开始的行用来表示注释,在配置文件中不起作用,看起来也非常的混乱,所以就想把#开始的注释行全部删除掉。但是也不不能傻傻的手动删除吧,那还用UE干啥,还不如用notepad,所以发现UE也很强大的宏(macro)功能。

点UE的“帮助”菜单,然后进“编辑宏命令”就是UE所有的宏指令,大概的看了一下后,进“宏”-"编辑宏"-"新建宏":
“宏名称”随便写,比如dd,快捷键随便写,比如Alt+D,然后下面的文本中默认已经有以下内容了:

InsertMode //插入模式
ColumnModeOff //关闭列模式
HexOff  //关闭16进制编辑模式

然后我就写了以下几句:

InsertMode
ColumnModeOn
HexOff
Find RegExp "#"
IfFound
DeleteLine
EndIf

解释一下:Find用来查找,后面的RegExp表示用正则表达式来匹配 引号内的内容表示行首以#开头的所有行。
IfFound和EndIf之间的语句表示如果发现匹配字符将执行的语句,这里我们要删除当前行,所以就用DeleteLine。

宏编辑好了,会其实你保存为一个*.MAC文件,以便以后加载。接下来运行,运行的方法有两种,一种是一直按住在上面设置的快捷键Alt+D不放,直到文件结束,还有种是点菜单“宏”-“多次运行”-“运行宏直到文件尾”,不过到了文件尾,宏还是没有停止执行,只有手动点“取消“。其实我们可以记下文件的行数,然后点菜单“宏”-“多次运行”-”指定当前宏和宏运行次数“输入500(500是因为#开头的行一定比所有的行数要小,所以500是极限),然后等待自动搞定。

结果发现还有很多显示四个空格然后一个#的没有被删除,比如:

#AddType text/html .shtml
#AddOutputFilter INCLUDES .shtml

同样用正则表达式来处理:

InsertMode
ColumnModeOn
HexOff
Find RegExp "%[][][][]#"
IfFound
DeleteLine
EndIf

[ ]

匹配任何括号中的单个字符或范围

然后用”搜索“-”替换“(ctrl+r),”查找什么“输入**%[^t]++^p **,勾选”正则表达式“:UltraEdit,可以删除部分的空白行,因为有些空白行不匹配以上字符,具体原因是^p表示一个DOS换行,有些空白行在HEX模式下有两个0D0A,原因未知。
不过现在总算文件是清晰了,其实有更好的方法的,就是暂时还没发现。

-----------
gossip:
Xmas's Eve Shopping出去Shopping了一下,发现到处都是用充气娃娃棒槌到处打人的,干脆叫”K人节“。我就纳闷了,西方都在家团聚吃大火鸡,你丫的跑出来折腾啥玩意儿啊,还让俺们police叔叔晚上都回不了家,看你几丫的疯,你疯就疯,别用刀子捅人啊,太不安全了,当然以上现象仅限于在本地发生,还是回寝宫洗洗睡鸟。