emacsシェルで前のコマンドをどのように実行しますか?


47

Ubuntuのターミナルモードで、2つのバッファーを開いた状態でemacsを実行しています。1つはrubyファイルで、もう1つはシェル(Mx shellと入力して開きます)で、シェルバッファーに切り替えると、前に実行したのと同じコマンドを実行します。通常、ターミナルウィンドウで上矢印を押すだけですが、emacsでは、カーソルを1行上に置くだけです。

emacsシェル内から前のシェルコマンドを実行するキーストロークを知っている人はいますか?

回答:



24

に加えてM-p、を使用することもできC-upます。補完的なキーM-nまたはC-downあなたの歴史の中で、次のコマンドを取得します。


1
ああ、タイ。それはもっと自然に思えます。
リドミス

1
最初の質問には載っていませんが、[C-up]と[C-down]はターミナル(PuTTY)を介してEmacsで機能しないことを認めなければなりません。
avp

1
また、私のMacでは動作しないようです。C-upはMac固有の機能にマッピングされます。
アモ14

私にとってもC-upにマップされexposeます。そしてM-p、私にとってより自然に感じます。
インドラダニューシュグプタ14年

5

これをemacs initファイルに追加することもできます。

(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input)

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))

0

DeLorean88の答えは私にとってはうまくいきましたが、「progn」行に2番目の閉じ括弧があります:

(progn(require 'comint))
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input))

ファイルをもう一度確認してください。2番目のdefine-keyは、最後の閉じ括弧が最初の括弧と一致しないため、構文エラーを引き起こすはずです。
vfclists
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.