emacs keybinding在终端中不起作用

ror*_*oro 1 emacs terminal key-bindings

我在.emacs文件中设置了以下键绑定:

(global-set-key (kbd "C-S-M-w") 'windmove-up)
(global-set-key (kbd "C-S-M-s") 'windmove-down)
(global-set-key (kbd "C-S-M-d") 'windmove-right)
(global-set-key (kbd "C-S-M-a") 'windmove-left)

(global-set-key (kbd "C-S-a") 'shrink-window-horizontally)
(global-set-key (kbd "C-S-d") 'enlarge-window-horizontally)
(global-set-key (kbd "C-S-s") 'shrink-window)
(global-set-key (kbd "C-S-w") 'enlarge-window)
Run Code Online (Sandbox Code Playgroud)

当他们在自己的窗口时,他们工作得很好.但是,如果我在终端(emacs -nw)中运行它,则不会加载键绑定.即使在加载.emacs文件后,我仍然没有键绑定.

当我使用emacs守护进程并在客户端和终端中打开时,这是相同的故事.如果重要的话,我在linux机器上.

Yur*_*ber 6

问题不在于emacs,问题是修饰键的组合(Control,Shift和Alt)在大多数终端程序中表现得相当差.类似的问题一直在这里以及许多其他地方出现,包括超级用户,例如:emacs - [control shift up]不起作用,以及https://superuser.com/q/230852.你需要在你的特定终端进行测试 - 但是检查Gnome终端显示的C-S-情况与公正无法区分C-,因此你的大多数绑定甚至都没有正确地使用emacs

如果您需要说服自己使用C-h k,那么您将失去组合.您会看到,当您在终端中运行时,这些组合会被剥离一些修饰符.

我经历过类似的经历,并得出结论,与终端的斗争是不值得的.当你在终端时,我建议你将需要多个修改器的键组合重新映射到其他东西.(例如,我最终将windmove命令重新映射到F键.)或者,我可以建议使用邪恶的领导键(如果你使用邪恶),或者使用神模式.这大大减少了对多个修饰符的需求.