前言
CapsLock是什么,就是键盘左边中间那个大写锁定。一直以来的都是一个神奇的存在,不仅很少会用到,更多的时候还是一个非常碍事讨厌的存在。万能神奇小软件AutoHotKey,程序员的好帮手,小拇指的大救星。提供了一个简单可靠的解决方案来帮助广大的程序员变废为宝。它不像Dvorak键盘映射,在你有装逼需求的时候频繁添乱;也不像HHKB,不方便带还额外要笔银子。只需要一个随身携带的小脚本,甚至是直接编译成百来K的可执行文件。就可以把这个方便的小工具带着跑。有了它,妈妈再也不用担心我的打字。
功能概述:
提供类似Vim的光标操作,提供便捷的导航按键与删除控制。提供Windows风格的最常用编辑按键组合。提供常用程序快捷方式,提供简易窗口标签控制,最最重要的,把ESC改到Capslock上了,简直广大VIM党的福音。
设计思想:
- 导航键:
h, I, j, k是VIM的传统导航方向键,但是必须在命令模式下才能使用。这就导致了任何希望移动光标的行为都要麻烦左手小拇指按一下ESC先。由于必须先摁ESC进入命令模式再移动光标,这样效率就不如两个键同时摁高。所以呢,将CapsLock+H, I, J, K改造为上下左右四个光标键,这样不仅提高了光标移动命令的效率,更重要的是可以直接在VIM的输入模式中移动光标,更更重要的是这种键位修改和传统VIM键位是不冲突的,可以在SSH中同时使用,效果拔群,堪称一大加速神器。更更更重要的是在其他地方也管用,等于是将VIM的光标操作搬到整个操作系统中了。最后额外的特性就是:按下Alt再进行上述所有导航操作,等价于平时Shift+导航键的效果,可以选择文本块。也是非常方便的哟,为Vim的插入模式以及日常轻量级编辑提供了很不错的补充。
- 删除键
这个没什么好说的CapsLock+{BNM,./}构成了六个删除键。尤其是N和 . 对应的删除单词功能,基本等价于Vim中的db和dw。在日常编辑中极为方便。
- 特殊字符
CapsLock + 分号 被设计为回车,减少了回车时右手小拇指移动的距离。CapsLock+引号被设计为"=",因为这是编程中最常用的符号之一。Caps+括号被映射为圆括号,这下括号一家终于团圆了,不由留下了激动的泪水。还有最后出场的大Boss:就是CapsLock改为Esc,单凭这一项功能,我就已经离不开AutoHotKey了,真是小拇指的解放者,腱鞘炎的大救星啊。谁用谁知道,这个可比脚踏板靠谱多了。
- 上档
这个毋需解释,以后按Shift的时候浪一点也无所谓了,键盘第二排的按键,CapsLock与上档键功能一致。
- 编辑控制
Windows已经用了十几年,复制粘贴剪切撤销这些快捷键已经成为 条件反射了怎么办?啊哈哈哈,ZXCVAY这几个使用频率最最高的Window编辑快捷键与Capslock合作的相当愉快,使用CapsLock+X与Ctr+X效果是一致的,但是左手小拇指就不用往下移动了,这一点与HHKB是一致的。
- 窗口控制
CapsLock+QWS是三个特殊的窗口控制按键:CapsLock+Q是Quit,关闭窗口的意思,映射到{Alt+F4}。CapsLock+W是关闭当前标签,映射到{Ctr+W},CapsLock+S是Switch的意思,切换当前标签,映射到{Ctr+Tab}。这几个快捷方式非常常用,在IDE或者浏览器里都很好用。
- 特殊程序
最后剩下的几个按键,属于自己的常用定制键位了,可以按照自己的爱好修改。我的仅供参考:
F:find,映射Alt+F,再将Alt+F设置为Everything的“显示搜索窗口”上了,一键搜索文件,绝对是我用的最多的快捷方式之一。在Everything无效的时候,还可以作为“文件”菜单项的快捷键。
D: Dictionary,被我映射到Alt+D,同时将Alt+D设置为Bing词典的迷你词典唤出按键。查英语词汇非常方便
G:被我映射到Alt+G,并将Alt+G映射到GitHub Shell上。
E:映射到Explore,使用Bing搜索
R:Run Shell:打开Powershell
T:Text Editor:打开Notepad++
200K不到的小脚本,小程序。这么小巧玲珑的东西,我在OneNote里,OneDriver,百度盘,邮箱里都放了一份,在别的电脑上随用随下。真是方便。
最后分享一下下载链接吧。http://pan.baidu.com/s/14fWN8#path=%252FAutoHotKey
exe是按照上述配置的直接可以用的脚本文件。ahk是脚本源代码,顺便附带了AHK的程序本体。
为了防止被度娘吃掉,贴出脚本的文本版:
;;====================Feng Ruohang‘s AHK Script=====================;; ;;==================================================================;; ;;=========================CapsLock‘s Stuff=========================;; ;;==================================================================;; SetCapsLockState, AlwaysOff ;;=============================Navigator============================|| ;===========================;U = PageDown CapsLock & u:: if getkeystate("alt") = 0 Send, {PgUp} else Send, +{PgUp} return ;===========================;I = Home CapsLock & i:: if getkeystate("alt") = 0 Send, {Home} else Send, +{Home} return ;===========================;O = End CapsLock & o:: if getkeystate("alt") = 0 Send, {End} else Send, +{End} return ;===========================;P = PageDown CapsLock & p:: if getkeystate("alt") = 0 Send, {PgDn} else Send, +{PgDn} return ;===========================;H = Left CapsLock & h:: if getkeystate("alt") = 0 Send, {Left} else Send, +{Left} return ;===========================;J = Down CapsLock & j:: if getkeystate("alt") = 0 Send, {Down} else Send, +{Down} return ;===========================;K = UP CapsLock & k:: if getkeystate("alt") = 0 Send, {Up} else Send, +{Up} return ;===========================;L = Right CapsLock & l:: if getkeystate("alt") = 0 Send, {Right} else Send, +{Right} return ;;=============================Deletor==============================|| CapsLock & ,:: Send, {Del} ; , = Del char after CapsLock & .:: Send, ^{Del} ; . = Del word after CapsLock & /:: Send, +{End}{Del} ; / = Del all after CapsLock & m:: Send, {BS} ; m = Del char before; CapsLock & n:: Send, ^{BS} ; n = Del word before; CapsLock & b:: Send, +{Home}{Del} ; b = Del all before; ;;============================Special Char==========================|| CapsLock & ‘:: Send, = ; ‘ = = CapsLock & `;:: Send, {Enter} ; ; = Enter CapsLock & {:: Send, +9 ; { = ( CapsLock & }:: Send, +0; ; } = ) CapsLock & `:: Send, +`` ; Shift CapsLock & 4:: Send, +4 CapsLock & 5:: Send, +5 CapsLock & 6:: Send, +6 CapsLock & 7:: Send, +7 CapsLock & 8:: Send, +8 CapsLock & 9:: Send, +9 CapsLock & 0:: Send, +0 CapsLock & -:: Send, +- CapsLock & =:: Send, += CapsLock & \:: Send, += ;;============================Editor================================|| CapsLock & z:: Send, ^z ; Z = Cancel CapsLock & x:: Send, ^x ; X = Cut CapsLock & c:: Send, ^c ; C = Copy CapsLock & v:: Send, ^v ; V = Paste CapsLock & a:: Send, ^a ; A = Select All CapsLock & y:: Send, ^y ; Y = Redo ;;===========================Controller=============================|| CapsLock & s:: Send, ^{Tab} ; Switch Tag S = {Ctr + Tab} CapsLock & w:: Send, ^w ; Close Tag W = {Ctr + W} CapsLock & q:: Send, !{F4} ; Close Window Q = {Alt + F4} CapsLock::Send, {ESC} ; Vimer‘s love Capslock = {ESC} ;;=========================Application==============================|| CapsLock & d:: Send, !d ; Dictionary D = {Alt + D} CapsLock & f:: Send, !f ; Everything F = {Alt + F} CapsLock & g:: Send, !g ; Reversed G = {Alt + G} CapsLock & e:: Run http://cn.bing.com/ ; Run Explore E = {Explore} CapsLock & r:: Run Powershell ; Run Powersh R = {Powershell} CapsLock & t:: Run C:\Program Files (x86)\Notepad++\notepad++.exe ; Run Notepad++ T = {Text Editor} ;;==================================================================;; ;;=========================CapsLock‘s Stuff=========================;; ;;==================================================================;;