Відповіді:
Комбінація M-!
дозволяє запускати команди оболонки. Ви можете використовувати його для запуску окремого urxvt
.
M-! urxvt RET
Я просто спробував це xterm
(у мене немає urxvt
), і він відкрився в тій самій директорії, що і файл у буфері.
Якщо ви хочете визначити ярлик, додайте щось подібне у свій файл init:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
У моєму випадку я пов’язав ярлик на: Ctrl+ C- S.
Я зазвичай використовую M-x term
.
Ви також можете оформити замовлення:
M-x terminal
M-x shell
M-x term
ефективно запускає емулятор терміналу, написаний elisp. З довідки:
термін
M-x ... RET Запуск терміналу-емулятора в новому буфері. (термін ПРОГРАМА)Термін - це інтерактивна складена функція Lisp в `term.el '.
Запустіть термінал-емулятор у новому буфері. Буфер знаходиться в режимі Term; див. "термін-режим" для команд, які використовуються в цьому буфері.
Введіть Cc b для переключення на інший буфер.
multi-term
Команда emacs M-x shell
запустить оболонку в новий буфер (або переключиться на існуючий буфер оболонки, якщо такий є). Якщо це новий буфер оболонки, він буде запущений у каталозі файлу, який відвідується у поточному буфері. Якщо це наявний буфер оболонки, він все одно буде знаходитися в каталозі, де ви його залишили після останнього використання. Щоб завжди отримувати потрібну вам поведінку, не забудьте вбити буфер оболонки, коли ви закінчите з ним ( C-x k
)
Якщо M-x shell
вводиться занадто багато, ви можете встановити глобальний ключ, щоб запустити оболонку для вас. Щось подібне (global-set-key (kbd "C-x S") 'shell)
до вашого запуску-файлу слід зробити це (але будьте обережні, щоб не замаскувати ще одну корисну команду ярликом!)
Також майте на увазі, що це "тупий термінал", тому деякі команди, такі як git commit
потрібні параметри, як, наприклад, -m
паролі, будуть у простому тексті на вашому екрані.
Я хотів запустити виділене додаток терміналу konsole
. Я хотів відкрити нову вкладку в konsole, якщо вона працює, або запустити одну, якщо її немає.
Так як я був молодшим тоді, я розділив реалізацію між emacs та bash. Я називаю таке відключення від 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*")))
Сценарій дефунтування викликів bash 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
Більшу частину часу я використовую shell-mode
. Тому я активно використовую оболонки . Але коли мені потрібен зовнішній термінал. Я використовую urxvt-клієнт з tmux за допомогою цього:
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"))
Це відкриє urxvt-клієнт (з tmux) у вашому поточному каталозі. Я прив'язую його до переглянутого режиму-карти.
(use-package dired
:ensure nil
:ensure-system-package urxvt
:bind ((:map dired-mode-map
("," . term-here))))
Я вибираю urxvt-клієнт, тому що це швидко і просто. Не забудьте запустити свій urxvt-демон при запуску.
M-x term
, це здається приємним, але це не зовсім те, що я хочу. Я хочу запускати не оболонку (наприклад,bash
абоzsh
в буфері emacs, а термінальний емулятор (xterm
абоurxvt
...).