47 我在Ubuntu上处于终端模式,并且正在运行emacs,其中打开了2个缓冲区,一个是ruby文件,另一个是shell(通过键入Mx shell打开),当我切换到shell缓冲区时,我想要运行我之前运行的相同命令。我通常会在终端窗口中按向上箭头,但是在emacs中,它只是将光标向上移动了一行。 有谁知道从emacs shell中运行先前的shell命令的击键操作? ubuntu shell emacs — 利德密斯 source
24 除了M-p,您还可以使用C-up,我觉得更可取。补充键M-n或C-down将使您获得历史记录中的下一个命令。 — 普拉卡什K source 1 啊,ty。这似乎更自然。 — 利德米特 1 即使不是最初提出的问题,我也必须承认[C-up]和[C-down]在终端机(PuTTY)中在Emacs中不起作用。 — 2014年 1 我的Mac上似乎也无法使用;C-up映射到Mac专用功能。 — AMO 对我来说C-up也映射到expose。而且M-p感觉更自然的我。 — Indradhanush Gupta 2014年
5 您也可以将其添加到emacs初始化文件中: (define-key comint-mode-map (kbd "<up>") 'comint-previous-input) (define-key comint-mode-map (kbd "<down>") 'comint-next-input) — thiagowfx source
2 thiagowfx解决方案对我而言更可取,因为我通常会尝试避免上下文依赖。但是,为了使其工作,我必须先添加加载comint模式: (progn(require 'comint) (define-key comint-mode-map (kbd "<up>") 'comint-previous-input) (define-key comint-mode-map (kbd "<down>") 'comint-next-input)) — DeLorean88 source
0 DeLorean88的答案对我有用,但仅在“ progn”行上使用了第二个括号: (progn(require 'comint)) (define-key comint-mode-map (kbd "<up>") 'comint-previous-input) (define-key comint-mode-map (kbd "<down>") 'comint-next-input)) — 凯文·巴特利特 source 再次检查您的文件。第二个define键应该导致语法错误,因为最后一个右括号与第一个不匹配。 — vfclists