【需求】
1.条目一
2.条目二
然后 Alt+Enter自动输出下一个序号3.
【初稿1】
!Enter::
{
send {Home}+{End}^c{End}{Enter}
v:=getClipboard()
arr:=StrSplit(v, ".")
if (isNumber(arr[1])=1)
{
v:=arr[1]+1
SendInput, %v%.
}
}
return
getClipboard()
{
return %Clipboard%
}
isNumber(str)
{
return str+1=""?str:1
}
【效果】
【备注】
在QQ里用的话,需要修改发送消息热键为ctrl+enter:
方法一
方法二
【升级1】
功能能否进一步加强
针对1、顿号也适用?
!Enter::
{
send {Home}+{End}^c{End}{Enter}
v:=getClipboard()
arr:=StrSplit(v, [A_Tab, A_Space,".","、"])
; 计算在这个字段末尾分隔符的位置.
Position:= StrLen(arr[1])+1 ;已经切开的位置
; 获取解析循环中找到的分隔符.
Delimiter := SubStr(v, Position, 1) ;取切开为主后面的字符
if (isNumber(arr[1])=1)
{
v:=arr[1]+1
OutputDebug, % arr[1] "`n" arr[2]
SendInput, %v%%Delimiter%
}
}
return
【升级2】
针对a. 字母也适用
针对+ - * 开头的序号也适用
;markdown的自动编号功能
;作者:sunwind
;日期:2018年8月21日
;语言:AutoHotkey Unicode 32-bit
;更新网址:https://blog.csdn.net/liuyukuan/article/details/81905725
;支持数字、字母类型的序号递增
;支持-、+、*这类无次序,序号
;序号后支持句点 顿号 右括号 中文右括号 等分隔符
;不怕输入法干扰
;支持开头有空格或者tab符号
#SingleInstance, force
global Chars:="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz++--##**"
!Enter::
{
send {Home}+{End}^c{End}{Enter}
v:=getClipboard()
OutputDebug,% "原长" StrLen(v)
Result := LTrim(v)
OutputDebug,% "结果长" StrLen(Result)
count:=StrLen(v)-StrLen(Result)
OutputDebug >%count%<
if (count>0)
Prefix:=SubStr(v,1,count)
Else
Prefix:=""
arr:=StrSplit(Result, [".",". ","、",")",")",A_Space,A_Tab])
Position:= StrLen(arr[1])+1 ;已经切开的位置
Delimiter := SubStr(Result, Position, 1) ;取切开为主后面的字符
OutputDebug, % arr[1] "|" Delimiter "|" arr[2]
if (isNumber(arr[1])=1)
{
v:=arr[1]+1
SendInput,{text}%Prefix%%v%%Delimiter%
}
Else
{
k:=getIdx(arr[1])
if (k>0)
{
v:=getChr(k+1)
Sendinput,{text}%Prefix%%v%%Delimiter%
}
OutputDebug 【%v%】
}
}
return
getIdx(_chr)
{
if (_chr="" or StrLen(_chr)>1)
return 0
return % InStr(Chars,_chr,1)
}
getChr(idx)
{
return SubStr(Chars,idx, 1)
}
getClipboard()
{
return %Clipboard%
}
isNumber(str)
{
return str+1=""?str:1
}
最终效果