打磨程序员的专属利器分三个专题展示--
1. 命令行&文件
2. 快捷键(本文)
3. 文本
前言
本人与快捷键的渊源应该从游戏开始说起。10年前的经典游戏wow,游戏里的技能非常多,所以玩游戏时将所有比较常用的技术都设置成了快捷键。方向控制改成sdf,然后左手的其它字母键都是技能快捷键。甚至是鼠标滚轮的上下滚动都被我设置成了技能。设置快捷键后的游戏体验完全不一样,以致于现在有空时都还当休闲游戏玩下wow。
后来pc版植物大战僵尸很火,于是跟风玩了一段时间。但发现左上角那些待选的植物只能用鼠标去点--太慢了。于是做了个辅助工具,启动时注册全局的热键F1,F2,F3等,然后在游戏中按F1,F2,F3时,程序先用GetCursorPos()记录鼠标当前位置,再用SetCursorPos()将鼠标移到左上角待选的植物图标上,然后调用mouse_event()模拟鼠标点击,最后SetCursorPos()将鼠标移回原来的位置。这样用"快捷键"比手动操作鼠标去点不知快多少倍。
最后玩lol,默认快捷键qwer,由于这四个键上都没有fj键上的那一小凸点,很容易按错。于是将qwer分别改为xdfg,然后召唤师技能df改成cv,快捷智能施法alt-xdfg,升级技能设置为alt-qwer。
1. VisualStuido快捷键
由于本人经常写c/c++代码,并且使用vs2008+VisualAssist,下面是所有使用的快捷键--
可以看出本人非常喜欢使用Alt作为快捷键的前缀,因为只需要用左手原来按空格的大拇指,稍微转曲下就可以按到Alt键,左手其它的字母按键都不会受影响。而如果用ctrl键,左手整体都必须移动较大的位置,这样就很难和其它的字母键连按了。
具体的快捷键大概的说明一下:
a. vs默认的注释,取消注释的快捷默认好像是ctrl+shift+C,V,只想说连按这三个键时,左手移动的位置太大,不比直接Alt+C,V来更快
b. Alt+Q 可以在.h和.c/.cpp文件之间快速切换
c. Alt+D 可以快速定位到函数或变量名的定义处
d. Alt+F 可以查找光标所在函数名或变量名
e. Alt+上箭头、下箭头 可以在相同的函数名或变量名之间进行切换。
f. Alt+H,J,K,L 控制光标的左、下、上、右移动,是受了vim编辑器的影响。
2. vim
个人认为vim之于程序员就像五笔之于打字员。学过五笔的人都知道,打字时完全不需要用大脑去思考了--直接用“手指思考”如何打字即可。同样,熟悉vim后,很多操作都不需要思考了,可以用与思维同步的速度来编辑代码。初次看hjkl控制光标的左、下、上、右移动,感觉很别扭,但用多了手指就熟悉这种模式了。本人花了几个月跌跌撞撞的vim学习之路后,终于算是熟悉vim了。
在vs2008中本人为了使用vim的特性而安装了ViEmu。在vim的编辑模式下,为了移动光标,于是就有了上面将alt+H,J,K,L设置成光标移动的快捷键。
vim可以作为我们学习的最后一种编辑器。因为在linux或Mac下,在eclipse和xcode下都有vim的插件,这样在换平台后,可以保证vim所带来的便利不变。当然最好完全用vim来当IDE用(本人现在还没达到这种境界)。
关于vim的具体用法可以另写一篇文章了,这里就不过多阐述。
吐槽下xcode的快捷键,不能将配置导入导出,这样换一台电脑后都得重新配置。
3. CapsLock换成Ctrl
《vim实用技巧》的作者推荐将大小写锁定键换成ctrl,这样按ctrl+C,V,W等键时比原有的ctrl方便一点。个人这么替换后发现确实方便不少--只需要将左手小指往左多伸一点,然后无名指、中指、实指可以保证在原来的位置不变。而原来按ctrl键时,左手总是要移动一段距离,有时没信心时,还得看下键盘。
在windows下将下面的代码保存成reg文件,然后执行、注销电脑即可实现大写键换成ctrl。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] "Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00
而将大小写锁定键改成ctrl键后,如果出于未知原因将大写锁定了,于是本人写了一个小程序来模拟CapsLock键 KeyCaptital
5
4. 在键盘上帖便签
看图
将CapsLock换成Ctrl后,CapsLock几乎成了除空格之外,用得最多的按键了。为了使自己按得更有信心,从FJ键上的小凸点得到启发,于是在CapsLock上帖了一个小物体,这样指头按上去时就知道确实按的是这个键——不过不是很美观~~~
然后为了盲打数字键以及它上面的符号,写c程序时会用到*&%(),而写perl程序!@#$%^&*()这些符号都会用到,而每次按时几乎都得看键盘,也是受FJ凸点的启发,在"47"键上分别帖上便签,这样盲打数字键时,左右手的食指分别放在47键上,然后就可以用字母键盘的指法去打符号了。
5. 美好的憧憬
最近本人在Mac下工作了一段时间。Mac下的command所在的位置正在本人最喜欢的alt键的位置。不过为了保持习惯,在mac下将CapsLock改成command,而将command换成ctrl。这样复制、粘贴时在windows和mac下都是"CapsLock"+C,V。关闭窗口都是"CapsLock"+W等等。
比较Mac和windows,在快捷键上只能说是各有所长--
a. Mac下command+上箭头可以返回上一级目录,这是windows没有的
b. Mac下用command+o是打开或者进入目录,而windows直接是Enter键,而Mac下的Enter键居然是重命名。我想问:到底是打开一个文件用得多还是重命名一个文件用得多啊??把Enter这么好用的键用在重命名上太浪费了。
c. Mac下command+M可以最小化单个窗口,这是windows没有的。但comamnd+M太难用一个手按到了!!!也不能将这个快捷键换掉。(command+O也很难用一个手按)
于是多么希望有一款系统或者资源管理器可以完全做到所有的操作都可以自定义快捷键!!! 大概只有自己编译linux了吧……