Відкрити термінал від emacs


11

Чи є швидкий спосіб (комбінація клавіш), щоб відкрити емулятор терміналу (в моєму випадку urxvt) в тому ж каталозі , що і файл у поточному буфері emacs?

Відповіді:


15

Комбінація M-!дозволяє запускати команди оболонки. Ви можете використовувати його для запуску окремого urxvt.

M-! urxvt RET

Я просто спробував це xterm(у мене немає urxvt), і він відкрився в тій самій директорії, що і файл у буфері.

Якщо ви хочете визначити ярлик, додайте щось подібне у свій файл init:

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

У моєму випадку я пов’язав ярлик на: Ctrl+ C- S.


9

Я зазвичай використовую M-x term.

Ви також можете оформити замовлення:

  • M-x terminal
  • M-x shell

M-x termефективно запускає емулятор терміналу, написаний elisp. З довідки:

термін
M-x ... RET Запуск терміналу-емулятора в новому буфері. (термін ПРОГРАМА)

Термін - це інтерактивна складена функція Lisp в `term.el '.

Запустіть термінал-емулятор у новому буфері. Буфер знаходиться в режимі Term; див. "термін-режим" для команд, які використовуються в цьому буфері.

Введіть Cc b для переключення на інший буфер.


1
Дякую, я не знав M-x term, це здається приємним, але це не зовсім те, що я хочу. Я хочу запускати не оболонку (наприклад, bashабо zshв буфері emacs, а термінальний емулятор ( xtermабо urxvt...).
студент

1
@student подивіться наmulti-term
Ульріх Дангель

8

Команда emacs M-x shellзапустить оболонку в новий буфер (або переключиться на існуючий буфер оболонки, якщо такий є). Якщо це новий буфер оболонки, він буде запущений у каталозі файлу, який відвідується у поточному буфері. Якщо це наявний буфер оболонки, він все одно буде знаходитися в каталозі, де ви його залишили після останнього використання. Щоб завжди отримувати потрібну вам поведінку, не забудьте вбити буфер оболонки, коли ви закінчите з ним ( C-x k)

Якщо M-x shellвводиться занадто багато, ви можете встановити глобальний ключ, щоб запустити оболонку для вас. Щось подібне (global-set-key (kbd "C-x S") 'shell)до вашого запуску-файлу слід зробити це (але будьте обережні, щоб не замаскувати ще одну корисну команду ярликом!)

Також майте на увазі, що це "тупий термінал", тому деякі команди, такі як git commitпотрібні параметри, як, наприклад, -mпаролі, будуть у простому тексті на вашому екрані.


3

Я хотів запустити виділене додаток терміналу 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

1

Більшу частину часу я використовую shell-mode. Тому я активно використовую оболонки . Але коли мені потрібен зовнішній термінал. Я використовую urxvt-клієнт з tmux за допомогою цього:

  • Створіть файл з назвою "термін-тут" у / usr / local / bin /, що містить
urxvtc -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
  • Створіть нову функцію в emacs
(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-демон при запуску.


1

Якщо у вас встановлена helmрамка завершення, ви можете використовувати helm-run-external-command (C-x c C-c C-x)для запуску термінал-емулятор на ваш вибір або будь-яку іншу зовнішню програму в каталозі поточного буфера.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.