¿Existe una forma rápida (método abreviado de teclado) para abrir un emulador de terminal (en mi caso, urxvt) en el mismo directorio que el archivo en el búfer de emacs actual?
¿Existe una forma rápida (método abreviado de teclado) para abrir un emulador de terminal (en mi caso, urxvt) en el mismo directorio que el archivo en el búfer de emacs actual?
Respuestas:
La combinación le M-!
permite iniciar comandos de shell. Podrías usarlo para lanzar un separado urxvt
.
M-! urxvt RET
Solo lo probé con xterm
(no tengo urxvt
) y se abrió en el mismo directorio que el archivo en el búfer.
Si desea definir un acceso directo, agregue algo similar en su archivo de inicio:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
En mi caso, limité el acceso directo a: Ctrl+ C- S.
Yo suelo usar M-x term
.
También puedes pagar:
M-x terminal
M-x shell
M-x term
está lanzando efectivamente un emulador de terminal escrito en elisp. De la ayuda:
término
M-x ... RET Iniciar un emulador de terminal en un nuevo búfer. (plazo PROGRAMA)term es una función Lisp compilada interactiva en `term.el '.
Inicie un emulador de terminal en un nuevo búfer. El búfer está en modo Término; vea 'term-mode' para ver los comandos que se usarán en ese búfer.
Escriba Cc b para cambiar a otro búfer.
multi-term
El comando emacs M-x shell
iniciará un shell en un nuevo búfer (o cambiará a un búfer de shell existente, si hay uno). Si se trata de un nuevo búfer de shell, se iniciará en el directorio del archivo que se está visitando en el búfer actual. Si se trata de un búfer de shell existente, seguirá estando en el directorio donde lo dejó la última vez que lo usó. Para obtener siempre el comportamiento que desea, recuerde eliminar el búfer de shell cuando haya terminado con él ( C-x k
)
Si M-x shell
escribe demasiado, puede establecer una clave global para iniciar un shell por usted. Algo así como (global-set-key (kbd "C-x S") 'shell)
en su archivo de inicio debería hacerlo (¡pero tenga cuidado de no enmascarar otro comando útil con su acceso directo!)
Además, tenga en cuenta que este es un "terminal tonto", por lo que algunos comandos, como las git commit
opciones de necesidad, -m
y las contraseñas estarán en texto sin formato en su pantalla.
Quería correr una aplicación de terminal dedicado, konsole
. Quería abrir una nueva pestaña en konsole si se está ejecutando, o abrir una si no lo está.
Desde que era más joven en ese entonces dividí la implementación entre emacs y bash. Llamo al siguiente defun de 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*")))
El defun llama a 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
La mayoría de las veces que uso shell-mode
. Así que uso mucho shell-here . Pero cuando necesito terminal externo. Yo uso urxvt-client con tmux usando esto:
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"))
Esto abrirá urxvt-client (con tmux) en su directorio actual. Lo ato en dired-mode-map.
(use-package dired
:ensure nil
:ensure-system-package urxvt
:bind ((:map dired-mode-map
("," . term-here))))
Elijo urxvt-client porque es rápido y simple. No olvide ejecutar su urxvt-daemon al inicio.
Si tiene helm
instalado el marco de finalización, puede usarlo helm-run-external-command (C-x c C-c C-x)
para ejecutar un emulador de terminal de su elección o cualquier otro programa externo en el directorio del búfer actual.
M-x term
, parece agradable pero no es exactamente lo que quiero. Quiero comenzar no un shell (por ejemplobash
ozsh
en un búfer de emacs sino un emulador de terminal (xterm
ourxvt
...).