当插入符号时,我尝试将Tab发送权限为"或者'或)或]或}} ...使用AutoHotkey脚本。
1)如何在不弄乱AHK条件代码的情况下检测这些字符? 2)我设法在一个随机字符之前让Tab发送权限,但是当条件不成立时它没有发送Tab。
你能帮帮我吗?我觉得我离预期的行为并不远。这是我的代码:
; Notepad++ | Tab = right arrow if before " or ' or ) or ] or }
GetCaretText()
{
ClipboardToRestore := ClipboardAll
Clipboard =
Send +{right 1}
Send ^c
ClipWait
Send {left 1}
CaretText := Clipboard
Clipboard := ClipboardToRestore
return CaretText
}
Tab::
if (GetCaretText() = "" or GetCaretText() = "" or GetCaretText() = "" or GetCaretText() = "" or GetCaretText() = "")
Send {right}
else
Send {tab}
return
答案 0 :(得分:0)
这会使 TAB 跳过这些字符" ' ) ] }
,而不是发送标签
; This configures #If statements to match anywhere in title
SetTitleMatchMode 2
#IfWinActive - Notepad++
$Tab::onTab()
#IfWinActive
onTab()
{
ClipboardToRestore := ClipboardAll
Clipboard =
send +{right}^c
clipwait 0.1
CaretText := Clipboard
Clipboard := ClipboardToRestore
if (!CaretText)
send {tab}
else if (instr( """')]}", CaretText))
send +{left}{right}
else
send +{left}{tab}
}
这是一个不会消耗 TAB的替代版本
~Tab::onTab()
onTab()
{
ClipboardToRestore := ClipboardAll
Clipboard =
send {left}+{right 2}^c
ClipWait
CaretText := Clipboard
Clipboard := ClipboardToRestore
if (strlen(CaretText) == 1)
send +{left}{right}
else if (instr( """')]}", substr(CaretText, 2)))
send +{left}{delete}{right}
else
send +{left 2}{right}
}
备注:强>
~
通过按键(在本例中为 TAB )instr(haystack, needle)
测试字符串needle
是否在haystack
a:=""""
将a
设置为"
send {right}
跳过选项卡。