我的emacs按键使用方式-用shift,看来比较独特,有人也这样用过吗?

ctrl键按多了小指疼过一段时间,手掌按ctrl在笔记本上不好按;交换ctrl和caps lock键我也做过,这样用久了,换电脑换系统后和用别人电脑(或别人用我电脑)时会不适应;evil也尝试过,中文输入法时怎么也不顺手。

有一次发现shift键很好按,键盘上仅次于空格的第二大键,就想着拿shift键当ctrl键用,于是开始了折腾。 shift+字母是大小写字母状态切换,基本都是小写状态,这样搞,A是移到行首,E移到行尾,F光标前进,B光标后退,X+k是关闭buffer…

大写字母全部成了快捷键,那怎么输入大写字母呢?我用hydra写了一个函数实现。按L进入大写字母输入状态,空格键退出,如下:

这样在键盘小写状态下,可以部分实现拿shift键当ctrl键用(没必要全部实现,ctrl键也还是要用的!),键盘caps lock状态下,就没法输入,按键全是命令,成了vi了,我会注意键盘状态是小写才开始用emacs。

遇到过的麻烦是驼峰命名法用得多的时候, 如DataBaseUser,大写输入状态连续换几次,或者先打出后在按快捷键将单词首字母等大写,命名规则用data_base_user(或data-base-user)这样其实比驼峰命名法更方便好读。驼峰命名法还有什么问题就不讨论了。

这样使用按键的方式除了驼峰命名法以外我没遇到过其它问题,中文输入法状态下也没问题,已经用了一年多了,感觉还不错,小指不疼。

重要的是,shift键真的真的比ctrl键好按多了,特别是在笔记本上。好多笔记本(如macbook air),蓝牙键盘等,只有左ctrl键,没有右ctrl键,还很小,shift键却比enter键、退格键还要大,而且是两个。

有人也这样做过吗?或者尝试过?

2赞

还真没试过。

比如在读 help 文档的时候, 我经常会用到 tab +shift 来跳转。

这种怎么办呢?

(use-package buffer-move                                                                                                      |
  :ensure t                                                                                                                   |
  :bind (("<C-S-up>"    . buf-move-up)                                                                                        |
         ("<C-S-down>"  . buf-move-down)                                                                                      |
         ("<C-S-left>"  . buf-move-left)                                                                                      |
         ("<C-S-right>" . buf-move-right)                                                                                     |
         ))  

会不会有更多的地方遇到 C-S 一起用的时候?

不影响,我只是把常用的命令绑定到大写字母上,或大写字母开头作前缀,好用shift键,基它的都没变,tab+shift,C-S-方向键都还是原来的功能,没有变化(win下,linux应该也是一样)。

dired-mode等大写字母都绑定的有命令,把我的默认设置覆盖了,但按键也是用shift开始,只要好按就行。

我用Dvorak布局,所以,把Caps设成Ctrl,方向移动一点都不累。

因为b,f都是右手按的,a,e,都是左手按的。

个人感觉Dvorak超适配Emacs.

其实只要你改了到别人的电脑都会不习惯的。

只有两种经常用,能自由切换,才可能没有问题

1赞

笔记本上的ctrl确实比较麻烦,大多数情况下外接键盘用,没有外接键盘的时候就ctrl和tab交换,最后避免用别人电脑

我是把RAlt和RCtrl交换了,这样左手拇指是Meta,右手拇指是Ctrl,挺爽的。:rofl:

1赞

我这个修改只是在emacs层面改动有效,对键盘本身的按键映射没有影响,不会改了后电脑里其它的软件按键也跟着变,影响不到电脑里其它任何软件的正常使用。

这样当别人用我的电脑时就没问题。我用别人电脑也不会有不适应的问题。

空格可以当成ctrl用

@yuanchuyouzuoshan 你不会是指系统层面调换ctrl和空格键吧?非系统层调换按键映射,也不用evil,我尝试过用空格当ctrl键用,但遇到问题解决不了放弃了。

比如ctrl+p,ctrl+n是上下移动光标,换成shift+p,shift+n更加好按,可以按住shift不放,然后连续多次按p可n,换着按,空格+p,空格+n,就没能做到按住空格不放,然后按p和n多次上下移动光标,要按住空格在松开然后在按p或n,这样操作不便,还不如就用方向键移动光标。

另外空格键本身也是使用频繁的一个键,原有功能用其它键替换也不是很方便。

http://cute-jumper.github.io/emacs/2016/02/22/my-simple-setup-to-avoid-rsi-in-emacs

用xcape,长按输出Ctrl单击Space,代价是Ctrl-Space的组合键会废掉。

abo-abo这玩法也不错,把;作为额外的修饰键

3赞

;要节制,不然会痛……(我现在不用hhkb了,;用左下角的键替代了)

觉得shift位置不在最舒服的位置,我的方法不太一样。

我比较喜欢leader key的按键方式,但是又不喜欢频繁切换模式和输入法,想了很久,最终得到一个适合自己的配键方案,使用逗号+两个字符的方式,光是两个字母组合起来,都有26*26种功能可以设置,如果加上数字就更多了,足以设置用到的功能。 1.leader key用逗号“,”,要输入原本的逗号则使用“C-,”或者“,”;

2.“C-k”或”,”代替“C-g”;

3.最常用的移动用“M-i/j/k/l”;

4.Ctrl用左手掌下边或左手中指按;

这种方法不需要交换ctrl和tab,基本不会和emacs本身的按键冲突,逗号键很容易按。

供参考!

1赞

感谢 @owensys 。好办法,我也应该要改变。

我用shift,虽然在中文输入法下没问题,但在英文输入下,驼峰命名等大小写混合多的时候效率始终不高,而在计算机的世界里,英文才是主流,不能总是用中文,学好英语,高效率输入英文才是最重要的。

试过capslock,发现太大太重,按起来很快就疼了,所以改回了普通的ctrl

shift用久了习惯后不好改了 :joy:@owensys 的逗号给了我一个思路,用逗号+字母来输入单个大写字母,之后自动退出hydra,这样多个大小写字母混合输入时就快多了,而连续输入多个大写字母时,还用以前的,不自动退出hydra。输入原本逗号用",+空格"。

1赞

Cool!:sunglasses:

来试试这个吧

这个是真心挺奇特的,不过我经常切换大小写 :joy:

我用的HHKB,所以没有control键的担忧,手感也很不错

你不觉得那两command键,在Emacs里,很浪费么?它俩可以用大拇指按,于是我在Emacs中,command用作control,control用作command/super。你觉得如何?

HHKB(别的键盘,我也映射caps lock为control),Ctrl+x 真的不好按啊,但这个组合使用又那么频繁,所以我才用的command为control,你是怎么解决的?