现在是2021年9月,回头看七年前的问题,(上面网络掘墓人)。
首先,IDE(vscode、idea) 中:
- 如果选中文字,按 ^c 可以直接复制当前选中的内容;
* 题主的问题不存在了,所以不理解这个问题的痛点;
* 如果还存在,考虑修改 IDE 软件自带的快捷键
- 如果未选中文字,才复制当前行。
其次,提供另一种思路,按键选择文字,再按 ^c 复制:
Code: Select all
copySelectWord() {
send, ^{left}
send, ^+{right}
send, ^c
}
最后,推荐 IDE 的 vim 插件,多条路,更好走。
--------------------------------------------------------
更新:今天调试一个新功能,发现这个问题的价值:
Code: Select all
; 移动光标选中文字松开(涂色,而非拖拽到其他窗口): 复制
copyCursorSelect(){
DRAG_MOVE_TRESHOLD := 20 ; pixels
MouseGetPos, pos_x1, pos_y1
win1 := WinActive("A")
KeyWait, LButton, ,t1
if ErrorLevel
{
MouseGetPos, pos_x2, pos_y2
win2 := WinActive("A")
WinGetClass _class, A
if(((abs(pos_x2 - pos_x1) > DRAG_MOVE_TRESHOLD
or abs(pos_y2 - pos_y1) > DRAG_MOVE_TRESHOLD))
and win1 = win2 and _class != "ConsoleWindowClass")
{
SendInput ^c
}
}
}
使用左键按键抬起的位移距离,和时间间隔,来判断是否选中文字;
实际测试来看:
1)vscode 和 屏幕截图: 在时间间隔内(1秒),时间一到,无论它选中多少内容,就被 ^c 输入按键阻断了选中操作。
2)idea、notion:按键多线程,不受 ^c 阻断,但复制了整行/整个区域。
3)即使未选中,只是多处单击鼠标,也会触发这个函数,挤掉粘贴板原本的内容,浪费储存空间,视觉污染。
更令人无语的是,AHK 找不到任何方法能检测到 “选中文本(高亮)” 这个行为。
这个新功能,成了负优化。
所以,放弃幻想,砍掉这个功能吧。
--------------------------------------------------------
老实用 ^c 来操作;
或者添加附加延迟效果的冗余按键(Keywait),比如按选中,再按 c /前进键 ,触发复制,但这和不添加冗余按键的区别不大,不如砍掉