Bagaimana Anda menjalankan perintah sebelumnya di shell emacs?

47

Saya dalam mode terminal di Ubuntu, dan saya menjalankan emacs dengan 2 buffer terbuka, satu adalah file ruby, dan yang lainnya adalah shell (dibuka dengan mengetikkan Mx shell), dan ketika saya beralih ke buffer shell, saya ingin untuk menjalankan perintah yang sama yang saya jalankan sebelumnya. Saya biasanya hanya menekan panah atas di jendela terminal, tetapi di emacs, itu hanya menempatkan kursor ke atas satu baris.

Adakah yang tahu tentang keystroke untuk menjalankan perintah shell sebelumnya dari dalam shell emacs?

Lidmith
sumber

Jawaban:

63

M-p melakukan pekerjaan

vava
sumber
Terima kasih! Saya mencari sedikit, tetapi tidak dapat menemukannya.
Lidmith
24

Selain itu M-p, Anda juga dapat menggunakan C-up, yang menurut saya lebih disukai. Kunci pelengkap M-natau C-downakan memberi Anda perintah berikutnya dalam sejarah.

Prakash K
sumber
1
Ah, ty. Itu tampak lebih alami.
Lidmith
1
Meskipun tidak dimasukkan dalam pertanyaan awal, saya harus mengakui bahwa [C-up] dan [C-down] tidak berfungsi di Emacs via terminal (PutTTY).
avp
1
Tampaknya juga tidak berfungsi di Mac saya; C-up dipetakan ke fungsi spesifik Mac.
Amo
Bagi saya juga C-updipetakan ke expose. Dan M-pterasa lebih alami bagi saya.
Indradhanush Gupta
5

Anda juga dapat menambahkan ini ke file inac emacs Anda:

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

solusi thiagowfx lebih disukai bagi saya, karena saya biasanya mencoba untuk menghindari ketergantungan konteks. Namun, agar berfungsi, saya harus menambahkan mode pemuatan comint terlebih dahulu:

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

Jawaban DeLorean88 bekerja untuk saya, tetapi hanya dengan braket penutup kedua pada baris "progn":

(progn(require 'comint))
(define-key comint-mode-map (kbd "<up>") 'comint-previous-input)
(define-key comint-mode-map (kbd "<down>") 'comint-next-input))
Kevin Bartlett
sumber
Periksa kembali file Anda. Tombol definisi kedua harus menyebabkan kesalahan sintaksis karena braket penutup terakhir tidak cocok dengan yang pertama.
vfclists