Jawaban:
Kombinasi ini M-!
memungkinkan Anda untuk meluncurkan perintah shell. Anda dapat menggunakannya untuk meluncurkan yang terpisah urxvt
.
M-! urxvt RET
Saya baru saja mencobanya dengan xterm
(saya tidak punya urxvt
) dan itu terbuka di direktori yang sama dengan file di buffer.
Jika Anda ingin menetapkan pintasan, tambahkan sesuatu yang serupa di file init Anda:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
Dalam kasus saya, saya mengikat pintasan ke: Ctrl+ C- S.
Saya biasanya menggunakan M-x term
.
Anda juga dapat checkout:
M-x terminal
M-x shell
M-x term
secara efektif meluncurkan terminal emulator yang ditulis dalam elisp. Dari bantuan:
istilah
M-x ... RET Mulai terminal-emulator di buffer baru. (istilah PROGRAM)term adalah fungsi Lisp interaktif yang dikompilasi dalam `term.el '.
Mulai terminal-emulator di buffer baru. Buffer berada dalam mode Term; lihat `term-mode ' untuk perintah yang digunakan dalam buffer itu.
Ketik Cc b untuk beralih ke buffer lain.
multi-term
Perintah emacs M-x shell
akan memulai shell di buffer baru (atau beralih ke buffer shell yang ada, jika ada). Jika ini adalah buffer shell baru, itu akan dimulai di direktori file yang sedang dikunjungi di buffer saat ini. Jika ini merupakan buffer shell yang ada, itu masih akan berada di direktori tempat Anda meninggalkannya setelah terakhir menggunakannya. Agar selalu mendapatkan perilaku yang Anda inginkan, ingat untuk membunuh buffer shell ketika Anda selesai melakukannya ( C-x k
)
Jika M-x shell
terlalu banyak mengetik, Anda dapat mengatur kunci global untuk memulai shell untuk Anda. Sesuatu seperti (global-set-key (kbd "C-x S") 'shell)
dalam file startup Anda harus melakukannya (tetapi berhati-hatilah untuk tidak menutupi perintah lain yang berguna dengan pintasan Anda!)
Perlu diketahui juga bahwa ini adalah "terminal bisu" sehingga beberapa perintah seperti git commit
opsi kebutuhan seperti -m
dan kata sandi akan ada dalam plaintext di layar Anda.
Saya ingin menjalankan aplikasi terminal khusus konsole
,. Saya ingin membuka tab baru di konsole jika sedang berjalan, atau mengaktifkannya jika tidak.
Karena saya masih muda maka saya membagi implementasi antara emacs dan bash. Saya memanggil defun berikut dari emacs:
(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 panggilan bash script, 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
Sebagian besar waktu saya gunakan shell-mode
. Jadi saya banyak menggunakan shell-sini . Tetapi ketika saya membutuhkan terminal eksternal. Saya menggunakan urxvt-client dengan tmux menggunakan ini:
urxvtc -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
(defun term-here ()
(interactive)
(start-process "" nil "term-here"))
Ini akan membuka urxvt-client (dengan tmux) di direktori Anda saat ini. Saya mengikatnya di dired-mode-map.
(use-package dired
:ensure nil
:ensure-system-package urxvt
:bind ((:map dired-mode-map
("," . term-here))))
Saya memilih urxvt-client karena cepat dan sederhana. Jangan lupa jalankan urxvt-daemon Anda saat startup.
Jika Anda telah helm
menginstal kerangka penyelesaian, Anda dapat menggunakan helm-run-external-command (C-x c C-c C-x)
untuk menjalankan terminal-emulator pilihan Anda atau program eksternal lainnya di direktori buffer saat ini.
M-x term
, sepertinya menyenangkan tetapi tidak persis seperti yang saya inginkan. Saya ingin memulai bukan shell (misalnyabash
atauzsh
dalam buffer emacs tetapi emulator terminal (xterm
atauurxvt
...)