Terminal von emacs öffnen
On Februar 14, 2021 by admin Gibt es eine schnelle Möglichkeit (Tastenkombination), einen Terminalemulator (in meinem Fall urxvt) im gleichen Verzeichnis
Antwort
Die Kombination M-!
können Sie Shell-Befehle starten. Sie können es verwenden, um eine separate urxvt
zu starten.
M-! urxvt RET
Ich habe es gerade mit xterm
versucht (ich habe kein 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 etwas Ähnliches in Ihre Init-Datei ein:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
In meinem Fall habe ich die Verknüpfung gebunden an: Strg + C – S . P. >
Antwort
Normalerweise verwende ich M-x term
.
Sie können auch Kasse:
-
M-x terminal
-
M-x shell
M-x term
startet effektiv einen in elisp geschriebenen Terminalemulator. Aus der Hilfe:
term
Mx … RET Starten Sie einen Terminalemulator in einem neuen Puffer. (Begriff PROGRAMM)Begriff ist eine interaktive kompilierte Lisp-Funktion in` term.el „.
Startet 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.
Kommentare
- Danke, ich wusste nicht, dass '
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, aber einem Terminal-Emulator (xterm
oderurxvt
…). - @student haben a Schauen Sie sich
multi-term
Antwort
an. 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 es im Verzeichnis von gestartet Die Datei wird im aktuellen Puffer besucht. Wenn es sich um einen vorhandenen Shell-Puffer handelt, befindet sie sich immer noch in dem Verzeichnis, in dem Sie sie nach der letzten Verwendung hinterlassen haben r Um immer das gewünschte Verhalten zu erzielen, denken Sie daran, den Shell-Puffer zu beenden, wenn Sie damit fertig sind (C-x k
)
Wenn M-x shell
tippt zu viel, Sie können einen globalen Schlüssel festlegen, um eine Shell für Sie zu starten. Etwas wie (global-set-key (kbd "C-x S") "shell)
in Ihrer Startdatei sollte dies tun (aber achten Sie darauf, keinen anderen nützlichen Befehl mit Ihrer Verknüpfung zu maskieren!)
Beachten Sie auch, dass dies ein ist „dummes Terminal“, daher benötigen einige Befehle wie git commit
Optionen wie -m
und Kennwörter werden im Klartext auf Ihrem Bildschirm angezeigt.
Antwort
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 rufe das folgende Defun von Emacs auf:
(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*")))
Das 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
Antwort
Meistens verwende ich shell-mode
. Daher verwende ich häufig shell-here . Aber wenn ich ein externes Terminal brauche. Ich verwende urxvt-client mit tmux wie folgt:
- Erstellen Sie eine Datei mit dem Namen „term-here“ in / usr / local / bin / mit
urxvtc -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
- Neue Funktion in Emacs erstellen
(defun term-here () (interactive) (start-process "" nil "term-here"))
- An Ihren Lieblingsschlüssel binden
Dies öffnet den urxvt-client (mit tmux) in Ihrem aktuellen Verzeichnis. 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.
Antwort
Wenn Sie die Fertigstellungsframework installiert. Mit helm-run-external-command (C-x c C-c C-x)
können Sie einen Terminalemulator Ihrer Wahl oder ein anderes externes Programm im Verzeichnis des aktuellen Puffers ausführen.
Schreibe einen Kommentar