※ 本文為 cuteman0725 轉寄自 ptt.cc 更新時間: 2012-02-29 12:42:51
看板 EZsoft
作者 標題 Fw: [AHK-] [分享] ruby Text Edit Menu
時間 Sun Feb 26 13:02:45 2012
※ [本文轉錄自 EzHotKey 看板 #1FIRocUF ]
看板 EzHotKey
作者 標題 [AHK-] [分享] ruby Text Edit Menu
時間 Sun Feb 26 13:01:24 2012
是這樣的,不久之前我看到了這個
http://www.animal-software.com/dolphin-text-editor-menu.php
Dolphin Text Editor Menu (Animal Software)
Add extra formatting/sorting to any text editor (e.g. Notepad, Word, Visual Studio, etc). Free Download. ...
Add extra formatting/sorting to any text editor (e.g. Notepad, Word, Visual Studio, etc). Free Download. ...
這個小軟體感覺很有趣,可是有些地方使用上不太方便
所以我決定結合一下我學的ruby
想要做出類似功能,但是可以輸入ruby script來做文字改變
於是就誕生出這個"ruby Text Edit Menu"了~
由於我是第一次接觸autoHotkey,有些地方可能看起來很醜,請見諒~
//其實是查了很久以後才決定要用autoHotkey做的XD
//畢竟用程式語言監測hotkey還蠻難的
程式分成兩部分: ahk檔 和 rb檔
----------
ahk檔
----------
#SingleInstance, force
#Persistent
Menu, func, add, line, lineHandler
Menu, func, add, lines, linesHandler
Gui, line:New
Gui, line:Add, Text,, line
Gui, line:Add, Edit, vlineCmd -WantReturn
Gui, line:Add, Button, Default glineButton, OK
Gui, lines:New
Gui, lines:Add, Text,, lines
Gui, lines:Add, Edit, vlinesCmd -WantReturn
Gui, lines:Add, Button, Default glinesButton, OK
Name = rubyTextEditMenu
return
!a::
Menu, func, show
return
lineHandler:
Copy()
Gui, line:Show
return
linesHandler:
Copy()
Gui, lines:Show
return
lineButton:
Gui, line:Submit
GuiControl,, lineCmd,
Gui, line:Cancel
ReplaceLineBreak()
RunWait, %comspec% /c ""ruby" "%A_WorkingDir%\%Name%.rb" "n" "%clipboard%"
"%lineCmd%" > "%A_WorkingDir%\%Name%Tmp.txt" 2>
"%A_WorkingDir%\%Name%Error.txt""
Paste()
return
linesButton:
Gui, lines:Submit
GuiControl,, linesCmd,
Gui, lines:Cancel
ReplaceLineBreak()
RunWait, %comspec% /c ""ruby" "%A_WorkingDir%\%Name%.rb" "y" "%clipboard%"
"%linesCmd%" > "%A_WorkingDir%\%Name%Tmp.txt" 2>
"%A_WorkingDir%\%Name%Error.txt""
Paste()
return
Copy()
{
clipboard =
SendInput ^c
ClipWait
}
Paste()
{
global Name
FileRead clipboard, %Name%Tmp.txt
ClipWait
SendInput ^v
}
ReplaceLineBreak()
{
StringReplace clipboard, clipboard,
r
n, \n, All}
----------
rb檔
----------
def lineEval(str, evalString)
str.gsub!('\\n', "\n")
print eval evalString
end
def linesEval(strs, evalString)
strs = strs.split '\\n'
strs.each do |str|
print eval evalString
puts "" unless str == strs.last
end
end
if __FILE__ == $0
str, evalString = ARGV[1].dup, ARGV[2].dup
if ARGV[0] == 'n'
lineEval str, evalString
elsif ARGV[0] == 'y'
linesEval str, evalString
else
puts "Input Error, ARGV[0] == #{ARGV[0]}"
end
end
----------
把這個檔案放在同個資料夾下應該就可以了~
使用方法如下:
選取想要的文字,按下alt+a鍵會跳出選單
選單有兩個選項:line,lines
line表示將整個選取的文字當成一個字串,用ruby script處理
lines表示ruby script會套用到選取到的每一行上
選下去後,會跳出視窗要輸入ruby script
script中的"str"即表示選取到的文字
例如: 選取了"test",在script中的"str"就是"test"
例如: 選取了"hello",script輸入"str + ' world'",按下確定以後
"hello"就會被改成"hello world"
輸入的script不需要加雙引號! 然後字串請用單引號,想用雙引號請用%Q{}
這個我還不知道該怎麼辦,對autoHotkey不太熟
如果選了lines的話,每一行都會套用一次ruby script
例如: 選取了"I'm\nHe is",script輸入"str + ' human.'",按下確定
結果會是"I'm human.\nHe is human."
大概就這樣子了,希望大家會覺得好用~
如果覺得alt+a不太順手的話,上方淺藍色的部分可以改成想要的hotkey
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.226.31.90
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: mars90226 (125.226.31.90), 時間: 02/26/2012 13:02:45
--
※ 看板: P_qman 文章推薦值: 0 目前人氣: 0 累積人氣: 151
回列表(←)
分享