Emacs'tan açık terminal


11

Geçerli emacs arabelleğindeki dosyayla aynı dizinde bir terminal emülatörü (benim durumumda urxvt) açmanın hızlı bir yolu (klavye kısayolu) var mı?

Yanıtlar:


15

Kombinasyon M-!, kabuk komutlarını başlatmanıza izin verir. Ayrı bir başlatmak için kullanabilirsiniz urxvt.

M-! urxvt RET

Ben sadece denedim xterm(sahip değilim urxvt) ve arabellek dosya ile aynı dizinde açtım .

Bir kısayol tanımlamak istiyorsanız init dosyanıza benzer bir şey ekleyin:

(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))

Benim durumumda kısayolu şöyle bağladım: Ctrl+ C- S.


9

Genellikle kullanırım M-x term.

Ayrıca ödeme yapabilirsiniz:

  • M-x terminal
  • M-x shell

M-x termetkili bir şekilde elisp ile yazılmış bir terminal emülatörü başlatmaktadır. Yardımdan:

terimi
M-x ... RET Yeni bir tamponda bir terminal emülatörü başlatın. (dönem terimi)

terimi, "term.el" de derlenmiş etkileşimli bir Lisp işlevidir.

Yeni bir arabellek içinde bir terminal öykünücüsü başlatın. Arabellek Terim modunda; bkz `dönem modu' komutları bu tampon içinde kullanmak için.

Başka bir tampona geçmek için Cc b yazın.


1
Teşekkürler, bilmiyordum M-x term, güzel görünüyor ama tam olarak istediğim şey değil. Bir mermi başlatmak istemiyorum (örneğin bashveya zshbir emacs tamponunda değil, bir terminal emülatöründe ( xtermveya urxvt...)
öğrenci

1
@student bir göz atınmulti-term
Ulrich Dangel

8

Emacs komutu M-x shellyeni bir arabellekte bir kabuk başlatır (veya varsa mevcut bir kabuk arabelleğine geçer). Yeni bir kabuk arabelleği ise, geçerli tamponda ziyaret edilen dosyanın dizininde başlatılır. Varolan bir kabuk arabelleği ise, son kullanımdan sonra bıraktığınız dizinde kalır. Her zaman istediğiniz davranışı elde etmek için, işiniz bittiğinde kabuk arabelleğini öldürmeyi unutmayın ( C-x k)

Eğer M-x shellçok fazla yazarak olduğunu, sizin için bir kabuk başlatmak için küresel bir tuşa ayarlayabilirsiniz. (global-set-key (kbd "C-x S") 'shell)Başlangıç ​​dosyanızdaki gibi bir şey yapmalı (ancak kısayolunuzla başka bir yararlı komutu maskelememeye dikkat edin!)

Ayrıca, bunun bir "aptal terminal" olduğunu unutmayın, bu yüzden bazı git commitseçenekler gibi komutlar -mve şifreler ekranınızda düz metin olacaktır.


3

Özel bir terminal uygulaması çalıştırmak istedim konsole. Konsolda çalışıyorsa yeni bir sekme açmak ya da çalışmıyorsa yeni bir sekme açmak istedim.

Gençliğimden beri uygulamayı emacs ve bash arasında bölüştüm. Ben emacs aşağıdaki defun çağırıyorum:

(defun bk-konsoles ()
  "Calls: bk_konsoles.bash -- which starts new tab in a running konsole,"
  (interactive)
  (let ((curDir default-directory))
    (shell-command (concat "bk_konsoles.bash \"" curDir "\" 2>&1 > /dev/null & disown") nil nil)
    (kill-buffer "*Shell Command Output*")))

Defun, bash komut dosyası çağırır bk_konsoles.bash:

#!/bin/bash

myPath=`echo $@ | sed 's/.$//'`

runningKonsole=`ps -e | grep konsole`
if [ "$runningKonsole"!="" ]; then
    if [ "$@"!="" ]; then
        konsole --new-tab --workdir "$myPath" 2>&1 > /dev/null
    else
        konsole --new-tab 2>&1 > /dev/null
    fi
    wmctrl -a " – Konsole"
else
    konsole
fi

1

Çoğu zaman kullanıyorum shell-mode. Bu yüzden burada kabuk kullanıyorum . Ama harici terminale ihtiyacım olduğunda. Bunu kullanarak tmux ile urxvt-client kullanın:

  • / Usr / local / bin / içeren 'term-here' adlı dosya oluşturun
urxvtc -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
  • Emacs'de yeni işlev oluşturma
(defun term-here ()
  (interactive)
  (start-process "" nil "term-here"))
  • Favori anahtarınıza bağlanın

Bu, geçerli dizininizde urxvt-client'ı (tmux ile) açar. Ben dired-mode-haritada bağlıyorum

(use-package dired
  :ensure nil
  :ensure-system-package urxvt
  :bind ((:map dired-mode-map
           ("," . term-here))))

Hızlı ve basit olduğu için urxvt-client'ı seçiyorum. Başlangıçta urxvt-daemon'unuzu çalıştırmayı unutmayın.


1

Eğer varsa helmtamamlama çerçevesi yüklü kullanabilirsiniz helm-run-external-command (C-x c C-c C-x)seçtiğiniz veya geçerli tampon dizindeki başka bir dış programının bir terminal-emülatörü çalıştırmak için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.