Windows 下将 C-SPC 映射到 C-@ 的 AutoHotkey 脚本

windows

#1

@whatacold

用了很多招都不好使,最后还是只能用 AutoHotkey 了。自己用了很久了,添加了开机自启,内存占用 2M,而且根本察觉不到速度方面的影响。

代码如下

^Space::^@

哈哈一行代码扯了这么多。就是把 C-SPC 绑到 C-@ 上咯。 懒省事儿的话,信得过我的话,下载我编译好的也行。https://pan.baidu.com/s/1pc6VH0j5Aa4n91drNseP3Q

注意一点,如果你是用管理员权限启动 Emacs,那要想让它生效必须也要用管理员权限启动这个 AutoHotkey 脚本。当然如果是管理员权限启动的 AutoHotkey 脚本也能对非管理员权限启动的 Emacs 生效了。所以给它管理员权限吧。


学习一个


#2

怪不得我的alt和esc脚本最近出了点问题, 原来是我给emacs管理员权限, 他把ahk的指令给无视了. 差点我就放弃evil了 .


#3

我把set-mark-command绑定到了C-o。习惯就好了。


#4

M-SPC



#5

感谢,有空时搞下看看。


#6

我是绑定到C-.

因为反正没几个package会用到


#7

我绑定到 C-z 键,十分顺手


#8

这是个bug吧,改注册表就就以了。


#9

我看 emacs maual 上写了 C-@

你也可以用一种通用的办法来移除缓冲区里的任何一部分:首先把光标移动到你
想要移除的区域的一端,然后按 C-<SPC>(<SPC>指空格)【注意,C-<SPC> 往
往被中文用户设定成输入法热键,如果这样,C-<SPC> 就被系统拦截而无法传递
给 Emacs 了,在这种情况下可以使用 C-@。】,然后将光标移动到你准备移除的
文字的另一端。这个时候, Emacs 会高亮光标和你按下 C-<SPC> 之间的文本。
最后,按下 C-w 。这样就可以把位于这两点之间的所有文字移除了。

C-@ 的话我是左手大拇指摁 C(我的键盘刚好能摁到),右手小拇指摁 SHIFT,左手中指或无名指摁 2


#10

算是个bug,当时我的 windows 版本明明提供了自定义快捷键,但是修改后无效。改注册表无效。


#11

是的,这里就是利用这个,做了一个映射。


#12

这个修改注册表不行吗,我测试过是可以的。修改了注册表之后,如果再去改系统快捷键,会重置。


#13

那时候我试的(windows 10 某版本)不行。现在不清楚什么情况了。


#14

Windows 7,8,10我都试过,均可以


#15

支持设置为 win + space 吗?


#16

感谢各位支招,由于我只使用 GUI ,没有在终端使用的需求。总结下各位的方法及我对几种方法的偏好(排序),供列位参考,我用第一种了:

  1. 更改 Windows 的切换输入法快捷键, Emacs 必须是“第一等公民” :slight_smile: 这样 Windows Linux 的体验就一致了

    直接在系统输入法设置处,更改按键为 Ctrl+F9 。本来想设置为 Win+Space 的, 结果找不着北,就放弃了。

  2. C-z 这么方便的按键, GUI 中没有使用 C-z 的习惯,不用确实浪费

  3. AHK 由于还需要引入一套软件,就放在最后考虑了