CapsLock魔改大法——变废为宝实现高效编辑
前言
CapsLock,也就是键盘左边中间那个大写锁定。平时很少会用到,跟shift功能重复不谈,更多的时候还会带来各种额外的麻烦。 一直以来的都是一个非常碍事讨厌的存在。就是这么一个垃圾键,偏偏却占了最方便的辅助键位位置。万能神奇小软件AutoHotKey,程序员的好帮手,小拇指的大救星,提供了一个简单可靠的解决方案来帮助广大的程序员变废为宝。比起其他键盘改造方案,它不像Dvorak这类键盘映射,在你临时ShowTime总会添乱;也不像HHKB这类硬件外设,携带不便带还额外要钱。一个随身携带的小脚本,或者二百K的可执行文件。就可以把这个方便的小工具随身带着跑。有了它,妈妈再也不用担心我的打字。
功能概述:
把Capslock改造成了一个新的辅助按键(类似Ctr,Alt,Shift,Win)。提供类似Vim的光标操作,提供便捷的导航按键与删除控制。提供Windows风格的最常用编辑按键组合。提供常用程序快捷方式,提供简易窗口标签控制。当然最最重要的,Capslock本身映射到了ESC上,简直广大VIM党的福音。下面提供一种现成的设计方案供参考,并描述设计思路。各位当然还是自己怎么顺手怎么改。图省事当然也有现成的EXE和AHK脚本能用哈~。
设计思想:
- 导航键:
h, I, j, k是VIM的传统导航方向键,但是必须在命令模式下才能使用。这就导致了任何希望移动光标的行为都要麻烦左手小拇指按一下ESC先。由于必须先摁ESC进入命令模式再移动光标,这样效率就不如两个键同时摁高。所以呢,将CapsLock+H, I, J, K改造为上下左右四个光标键,这样不仅提高了光标移动命令的效率,更重要的是可以直接在VIM的输入模式中移动光标,而且这种键位修改和传统VIM键位是不冲突的,可以在SSH中同时使用,效果拔群,堪称一大加速神器。同时呢,这几个按键映射在其他地方也管用,等于是将VIM的光标操作搬到整个操作系统中了。最后额外的特性就是:按下Alt再进行上述所有导航操作,等价于平时Shift+导航键的效果,可以选择文本块。也是非常方便的哟,为Vim的插入模式以及日常轻量级编辑提供了很不错的补充。
- 删除键
这个没什么好说的了吧。CapsLock+{BNM,./}构成了六个删除键。好处是什么,就是前删和后删字符由最灵活的食指和中指负责,M<两个键按起来非常快捷。另外N和 . 对应的删除单词功能,等价于Vim中的db和dw,在日常编辑中也是较为高频的编辑命令。前删至顶和前删至底{Cplk+B/}可能用的不是太多,我正考虑是不是换成Build和注释的快捷键。
- 特殊字符
CapsLock + 分号 被设计为回车,减少了回车时右手小拇指移动的距离。CapsLock+引号被设计为"=",因为这是编程中最常用的符号之一。Caps+括号被映射为圆括号,这下括号一家终于团圆了,不由留下了激动的泪水。还有最后出场的大Boss:就是CapsLock本体映射为Esc,单凭这一项功能,我就已经离不开AutoHotKey了,真是小拇指的解放者,腱鞘炎的大救星啊。谁用谁知道,这个可比脚踏板靠谱多了。当然除了ESC,其他的按键可能略有牵强,自己舒服就行。
- 上档
这个毋需解释,以后按Shift的时候浪一点也无所谓了,键盘第二排的按键,CapsLock与上档键功能一致。但是我要说的是,这里其实改造空间最大了。除了指定其他快捷宏这类朴素用法,还可以写五种不同的键盘映射脚本适应不同的工作场景,用Capslock+1234切换,想想也是醉了。
- 编辑控制
Windows已经用了十几年,复制粘贴剪切撤销这些快捷键已经成为 条件反射了怎么办?啊哈哈哈,ZXCVAY这几个使用频率最最高的Window编辑快捷键与Capslock合作的相当愉快,使用CapsLock+{X}与Ctr+{X}效果是一致的,但是左手小拇指就不用往下移动了,这一点与HHKB是一致的。而且还解决了按下Ctr+Y的时候需要两只手的问题,现在一只左手就可以掌控所有常用基本编辑命令了。
- 窗口控制
CapsLock+QWS是三个特殊的窗口控制按键:CapsLock+Q是Quit,关闭窗口的意思,映射到{Alt+F4}。CapsLock+W是关闭当前标签,映射到{Ctr+W},CapsLock+S是Switch的意思,切换当前标签,映射到{Ctr+Tab}。这几个快捷方式非常常用,在IDE或者浏览器里都很好用。
- 特殊程序
最后剩下的几个按键都属于Hot Spot,可以把一些常用的程序或者命令丢在这里,提供我的配置作为参考:
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=========================;;
;;==================================================================;;
CapsLock魔改大法——变废为宝实现高效编辑的更多相关文章
- Capslock+ 键盘党都爱的高效利器 - 让 Windows 快捷键操作更加灵活强大
Capslock+ 键盘党都爱的高效利器 - 让 Windows 快捷键操作更加灵活强大 优化辅助 Windows 2016-06-05 91,167 微博微信QQ空间印象有道邮件 ...
- 魔改——MFC MDI程序 定制 文档模板 运行时全部打开 禁用关闭按钮
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- 魔改——MDI多视图模板Tab/标签页 初始化/操作控件
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- 魔改——MFC SDI程序 转换为 MDI程序
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- 【题解】BZOJ4241: 历史研究(魔改莫队)
[题解]BZOJ4241: 历史研究(魔改莫队) 真的是好题啊 题意 给你一个序列和很多组询问(可以离线),问你这个区间中\(\max\){元素出现个数\(\times\)元素权值} IOI国历史研究 ...
- Asp.Net Core Identity 骚断腿的究极魔改实体类
前言 默认的 Identity 实体类型在大多数时候已经基本够用,很多时候也只是稍微在 IdentityUser 类中增加一些自定义数据字段,比如头像.这次,我要向园友隆重介绍我魔改之后的 Ident ...
- 你没有见过的【高恪】船新版本(SX3000 NAT1 X86魔改)
最近魔改了高恪SX3000 X86,做了如下更改: 开启了SSH 集成了插件(酸酸乳.V2RXY.SMB等等) 开启了NAT1 DIY了主题 精简了官方内置的无用应用和模块 截图(建议右击图片,在新标 ...
- [7b2美化]柒比贰 魔改系列|7B2-分类封面添加波浪效果&每日诗词
本文转载自:钻芒博客 https://www.zmki.cn/5105.html 效果如图: 代码: 首先在style.css样式表里添加波浪样式 /*浪来了*/ .lang { overflow: ...
- 【题解】LOJ2462完美的集合(树DP 魔改Lucas)
[题解]LOJ2462完美的集合(树DP 魔改Lucas) 省选模拟考这个??????????????????? 题目大意: 有一棵树,每个点有两个属性,一个是重量\(w_i\)一个是价值\(v_i\ ...
随机推荐
- NodeJS代码组织与部署
使用NodeJS编写程序前,为了有个良好的开端,首先需要准备好代码的目录结构和部署方式,就如同修房子要先搭脚手架.本章将介绍与之相关的各种知识. 一.模块路径解析规则 我们已经知道,require函数 ...
- SpringBoot:使用feign调用restful服务时地址栏传参
1.服务提供者(controller层) @GetMapping("/user/{id}") public ApiResult getById(@PathVariable(&quo ...
- 一分钟理解什么是REST和RESTful
从事web开发工作有一小段时间,REST风格的接口,这样的词汇总是出现在耳边,然后又没有完全的理解,您是不是有和我相同的疑问呢?那我们一起来一探究竟吧! 就是用URL定位资源,用HTTP描述操作. 知 ...
- [Web] 深入理解现代浏览器
转载: https://blog.csdn.net/qihoo_tech/article/details/91921777 奇技指南 身为前端,你真正深入理解了浏览器吗? 本文来自公众号奇舞周刊,作者 ...
- Self-Supervised Representation Learning
Self-Supervised Representation Learning 2019-11-11 21:12:14 This blog is copied from: https://lilia ...
- SpringBoot——配置文件加载位置及外部配置加载顺序
声明 本文部分转自:SpringBoot配置文件加载位置与优先级 正文 1. 项目内部配置文件 spring boot 启动会扫描以下位置的application.properties或者applic ...
- spring mvc中添加对Thymeleaf的支持
一.下载Thymeleaf 官方下载地址:https://dl.bintray.com/thymeleaf/downloads/thymeleaf/ 我下载的是最新的3.0.11版本 把包里的jar包 ...
- 图片上传: ajax-formdata-upload
传送门:https://www.cnblogs.com/qiumingcheng/p/6854933.html ajax-formdata-upload.html <!DOCTYPE html& ...
- ERROR: type "sum" does not exist
开发问pg中执行一个简单的语句,多次报错: > ERROR: type "sum" does not exist LINE 1: SELECT SUM ^ 看看具体的语句,其 ...
- C# selenium 高级
https://www.cnblogs.com/morang/p/7441091.html https://www.cnblogs.com/tobecrazy/p/4817946.html https ...