AutoHotkey
- 下载 AutoHotkey
- 新建一个文件 key.ahk
- 复制粘贴下面代码
; docs https://ahkcn.github.io/docs/misc/Clipboard.htm
; WIN 的符号是 #
; Ctrl 的符号是 ^
; Alt 的符号是 !
; Shift 的符号是 +
GroupAdd OneNoteGroup, ahk_exe onenote.exe
GroupAdd VsCodeGroup, ahk_exe Code.exe
; ; dev
; $^s::
; Send ^{s}
; sleep 100
; reload, "C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\gljm.ahk"
; return
$!c::
ClipSaved := ClipboardAll
ClipBoard := "" ; 让剪贴板初始为空, 这样可以使用 ClipWait 检测文本什么时候被复制到剪贴板中.
Send ^{c}
ClipWait
Send {End}
Send {Enter}
v1 := "console.log("
v2 = %clipboard%
ClipBoard := v1 "'" v2 " ->'" ", " v2 ")"
Send ^{v} ;
return
$#p::
ca := ClipboardAll
ClipBoard = ; 让剪贴板初始为空, 这样可以使用 ClipWait 检测文本什么时候被复制到剪贴板中.
Send ^c
ClipWait ; 等待剪贴板中出现文本.
Run powershell -NoExit -Command "pac '%ClipBoard%'"
ClipBoard := ca
return
; ctrl + right -> alt + left 返回
$^RButton::
Send !{Left}
return
; ctrl + 滚轮 -> alt + right 前进
$^MButton::
Send !{Right}
return
$F8:: ; 把 F1 键设置为热键 ($ 符号会有助于下面 GetKeyState 的 "P" 模式).
; 由于没有指定数字, 所以这是个无限循环, 直到遇到内部的 "break" 或 "return".
Loop {
; 如果此状态为 true, 那么用户实际已经释放了 F1 键.
if not GetKeyState("F8", "P") {
break ; 中断循环.
; 否则 (由于上面没有 "中断"), 继续点击鼠标.
Click ; 在当前指针位置点击鼠标左键.
return
$#s::
ca := ClipboardAll
ClipBoard = ; 让剪贴板初始为空, 这样可以使用 ClipWait 检测文本什么时候被复制到剪贴板中.
Send ^c
ClipWait ; 等待剪贴板中出现文本.
FoundPos := RegExMatch(ClipBoard, "^(https?://|www\.)", Match)
; MsgBox, % "FoundPoss : " FoundPos "`n" "Match: " Match
if (FoundPos) {
run, chrome.exe "%ClipBoard%"
} else {
run, chrome.exe "https://www.google.com/search?q=%ClipBoard%"
; run, chrome.exe "https://www.baidu.com/s?wd=%ClipBoard%"
ClipBoard := ca
return
$#d::
ca := ClipboardAll
ClipBoard = ; 让剪贴板初始为空, 这样可以使用 ClipWait 检测文本什么时候被复制到剪贴板中.
Send ^c
ClipWait ; 等待剪贴板中出现文本.
FoundPos := RegExMatch(ClipBoard, "^(https?://|www\.)", Match)
; MsgBox, % "FoundPoss : " FoundPos "`n" "Match: " Match
if (FoundPos) {
run, chrome.exe "%ClipBoard%"
} else {
run, chrome.exe "https://www.baidu.com/s?wd=%ClipBoard%"
ClipBoard := ca
return
; 选择路径, Win + o 打开文件或目录
; 复制路径, Win + o 打开文件或目录
$#o::
; C:\ | C:/
FoundPos := RegExMatch(ClipBoard, "(^[A-Za-z]:\\.*|^[A-Za-z]:/.*)", Match)
if (Match) {
Run powershell -Command "start '%ClipBoard%'"
FileOpen("d:/FileName.txt", "a").Write("start '%ClipBoard%'")
} else {
oCB := ClipBoardAll
ClipBoard = ; 让剪贴板初始为空, 这样可以使用 ClipWait 检测文本什么时候被复制到剪贴板中.
Send ^c
; ClipWait ; 等待剪贴板中出现文本.
FoundPos := RegExMatch(ClipBoard, "(^[A-Za-z]:\\.*|^[A-Za-z]:/.*)", Match)
if (Match) {
Run powershell -Command "start '%ClipBoard%'"
; Run powershell -NoExit -Command "start '%ClipBoard%'"
return
$!d::
Send ^{d}
return
; 光标左移
$^b::
Send {Left}
return
; 光标右移
$^f::
Send {Right}
return
; 光标上移
; OneNote中无法直接映射上下, 改成^Up
$^p::
if WinActive("ahk_group OneNoteGroup") {
Send ^{Up}
} else {
Send, {Up}
return
; 光标下移
; OneNote中无法直接映射上下, 改成^D
$^n::
if WinActive("ahk_group OneNoteGroup") {
Send ^{Down}
} else {
Send, {Down}
return
; 光标移动到下个单词
$^#f::
Send ^{Right}
return
; 光标移动到上个单词
$^#b::
Send ^{Left}
return
; 光标移动到行首
$^a::
Send {Home}
return
; 光标移动到行末
$^e::
Send {End}
return
; 向左删除
$^h::
Send {Backspace}
return
; 向右删除
$^d::
Send {Del}
return
; 向左删除单词
$^#h::
Send ^{Backspace}
return
; 向右删除单词
$^#d::
Send ^{Del}
return
; 删除当前位置到行尾
$^k::
Send +{End}
Send {Del}
return
; 删除当前位置到行首
$^u::
Send +{Home}
Send {Backspace}
return
; 重新利用被占用热键
; win+f代替C-f(查找)
$#f::
Send ^{f}
return
; win+f代替C-f(全局查找)
$#j::
Send ^{j}
return
; win+n代替C-n(新建)
$#n::
Send ^{n}
return
; win+a代替C-a(全选)
$#a::
Send ^{a}
return
; win+h代替C-h(chrome查看历史记录)
$#h::
Send ^{h}
return
; vscoede 向上移动一行
$!p::
Send !{Up}
return
; vscoede 向下移动一行
$!n::
Send !{Down}
return
$^o::
Send {End}
Send {Enter}
return
; 向左选择一行
$^+u::
Send +{Home}
return
; 向右选择一行
$^+k::
Send +{End}
return
; 向左选择一个单词
$^+b::
Send +^{Left}
return
; 向右选择一个单词
$^+f::
Send +^{Right}
return
; alt + b 输出 alt + Left
$!b::
Send !{Left}