Antworten:
Mit dieser Kombination M-!
können Sie Shell-Befehle starten. Sie können es verwenden, um eine separate zu starten urxvt
.
M-! urxvt RET
Ich habe es gerade mit versucht xterm
(ich habe es nicht urxvt
) und es wurde im selben Verzeichnis wie die Datei im Puffer geöffnet.
Wenn Sie eine Verknüpfung definieren möchten, fügen Sie Ihrer Init-Datei etwas Ähnliches hinzu:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
In meinem Fall habe ich die Verknüpfung gebunden an: Ctrl+ C- S.
Ich benutze normalerweise M-x term
.
Sie können auch auschecken:
M-x terminal
M-x shell
M-x term
startet effektiv einen in elisp geschriebenen Terminalemulator. Aus der Hilfe:
term
M-x ... RET Startet einen Terminalemulator in einem neuen Puffer. (Begriff PROGRAMM)term ist eine interaktive kompilierte Lisp-Funktion in `term.el '.
Starten Sie einen Terminalemulator in einem neuen Puffer. Der Puffer befindet sich im Term-Modus. Siehe `term-mode ' für die Befehle, die in diesem Puffer verwendet werden sollen.
Geben Sie Cc b ein, um zu einem anderen Puffer zu wechseln.
multi-term
Der Befehl emacs M-x shell
startet eine Shell in einem neuen Puffer (oder wechselt zu einem vorhandenen Shell-Puffer, falls vorhanden). Wenn es sich um einen neuen Shell-Puffer handelt, wird er im Verzeichnis der Datei gestartet, die im aktuellen Puffer besucht wird. Wenn es sich um einen vorhandenen Shell-Puffer handelt, befindet er sich weiterhin in dem Verzeichnis, in dem Sie ihn nach der letzten Verwendung verlassen haben. Denken Sie daran, den Shell-Puffer zu beenden, wenn Sie damit fertig sind ( C-x k
) , um immer das gewünschte Verhalten zu erzielen.
Wenn Sie M-x shell
zu viel tippen, können Sie einen globalen Schlüssel festlegen, um eine Shell für Sie zu starten. So etwas wie (global-set-key (kbd "C-x S") 'shell)
in Ihrer Startdatei sollte es tun (aber achten Sie darauf, keinen anderen nützlichen Befehl mit Ihrer Verknüpfung zu maskieren!)
Beachten Sie auch, dass dies ein "dummes Terminal" ist, sodass einige Befehle wie " git commit
Erforderliche Optionen" -m
und "Kennwörter" im Klartext auf Ihrem Bildschirm angezeigt werden.
Ich wollte eine dedizierte Terminalanwendung ausführen konsole
. Ich wollte einen neuen Tab in der Konsole öffnen, wenn er ausgeführt wird, oder einen starten, wenn dies nicht der Fall ist.
Da ich damals jünger war, habe ich die Implementierung zwischen Emacs und Bash aufgeteilt. Ich nenne das folgende Defun von 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*")))
Der Defun ruft das Bash-Skript auf 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
Die meiste Zeit benutze ich shell-mode
. Also benutze ich hier stark Shell- . Aber wenn ich ein externes Terminal brauche. Ich benutze urxvt-client mit tmux wie folgt:
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"))
Dadurch wird urxvt-client (mit tmux) in Ihrem aktuellen Verzeichnis geöffnet. Ich binde es in dired-mode-map.
(use-package dired
:ensure nil
:ensure-system-package urxvt
:bind ((:map dired-mode-map
("," . term-here))))
Ich wähle urxvt-client, weil es schnell und einfach ist. Vergessen Sie nicht, Ihren urxvt-Daemon beim Start auszuführen.
Wenn Sie das helm
Completion Framework installiert haben, können Sie helm-run-external-command (C-x c C-c C-x)
einen Terminalemulator Ihrer Wahl oder ein anderes externes Programm im Verzeichnis des aktuellen Puffers ausführen.
M-x term
, es scheint schön, ist aber nicht genau das, was ich will. Ich möchte keine Shell starten (zum Beispielbash
oderzsh
in einem Emacs-Puffer, sondern einen Terminal-Emulator (xterm
oderurxvt
...).