emacs Ctrl+Space 与系统切换输入法重合怎么办

因为树莓派暂时没法用emacs-rime,就用系统的rime,但是发现ctrl+空格被占用了,求教。

重合了换一个不就好了吗。。

请问在emacs里如何换。。。俺是小白,我不想换输入法的这个快捷键。。。

你不是用的系统的吗,你去搜一下啊。。

fcitx 或者 ibus 不是吗

ctrl+space是输入法中英文状态切换?现在绝大部分输入法都是用shift切换了,我已经久不用ctrl+space,用的shift,我又想问emacs如何识别shift键按下的问题了 :joy: 似乎是做不到

如果是想mark的话试试ctrl+@

1 个赞

我的习惯是在所有平台上使用相同的键位,统统避开 ctrl + space,因为绝大多数外国人开发的软件,这个都是“补全”,基本不可能不用“补全”功能的。

  • GNU/Linux DE - Super + space
  • MacOS - Command + space (也得避开ctrl + space)
  • Windows - Win + Space
1 个赞

请问, 你是如何在Win下变更这些设置的, 我尝试过更改 Ctrl+Space的映射, 但总会重置

我有那么些时间没用Windows了,我记得我这个方法好像只能在Windows 10中用,Windows 7的年代实在记不清楚了。核心思路:添加英文语言,Windows10在添加了英文语言后在英文输入法的时候 control + space 并不是英文输入法快捷键,那么在英文输入法时,emacs,vscode,eclipse,sublime,notepad++ 等等应用就会出提示/补全。如果你的中文输入法搞那种全局截获之类的话,将中文输入法中的切换语言换成别的键,比如我的fcitx Trigger Input Method: Super+Space (Gnome)。需要输入中文时按 Windows+Space切换到中文语言(同时也切换了输入法)。

Windows -> 开始菜单 -> 设置 -> 语言和时间 -> 左边“语言” -> 添加语言 (英语(美国))。

Linux下,修改 LC_CTYPE 为英语之类就会禁用 ctrl + space 切换系统输入法了,例如这样启动 emacs :

env LC_CTYPE=en_US.UTF8 emacs

我尝试过了,重启无效

具体不知道你怎么弄的,什么叫“重启无效”,不重启的时候是好的? 我这里3台物理机,2个虚拟机, 5个Windows10,都是这样设置的。

在 Windows 下要解决 Ctrl+ Space 冲突问题的终极方法是用 AHKCtrl+ Space 按键在 Emacs 中映射为 C-@ 。 在 AHK 的配置中加入下面的代码即可,希望能帮到有这个需求的朋友。

^Space::
        if WinActive("ahk_class Emacs")
	   Send ^{@}
Return

这个 Ctrl+ Space 是 Windows 系统的顽固 Bug,通过系统设置经常会自己恢复的。

1 个赞

我是把 Emacs 的标记功能改到 C-c m 了(取 LocalLeader + Mark)的含义。

;; 将选区操作绑定在 C-c m 上
(global-set-key (kbd "C-c m") 'set-mark-command)
(global-unset-key (kbd "C-@"))
(global-unset-key (kbd "C-SPC"))
1 个赞

主要是 Emacs 的标记功能太常用了。还是 C-空格比较方便。

1 个赞

:+1:t2: 看来我也得全局映射为C-@,这样我在系统的所有地方都可以C-Space进行选择文本了。