Réponses:
La combinaison M-!
vous permet de lancer des commandes shell. Vous pouvez l'utiliser pour lancer un autre urxvt
.
M-! urxvt RET
Je viens de l'essayer avec xterm
(je n'ai pas urxvt
) et il s'est ouvert dans le même répertoire que le fichier dans le tampon.
Si vous souhaitez définir un raccourci, ajoutez quelque chose de similaire dans votre fichier init:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
Dans mon cas, j'ai lié le raccourci à: Ctrl+ C- S.
J'utilise habituellement M-x term
.
Vous pouvez également commander:
M-x terminal
M-x shell
M-x term
lance effectivement un émulateur de terminal écrit en elisp. De l'aide:
terme
M-x ... RET Démarrer un émulateur de terminal dans un nouveau tampon. (terme PROGRAMME)term est une fonction Lisp interactive compilée dans `term.el '.
Démarrez un émulateur de terminal dans un nouveau tampon. Le tampon est en mode Term; voir `term-mode ' pour les commandes à utiliser dans ce tampon.
Tapez Cc b pour basculer vers un autre tampon.
multi-term
La commande emacs M-x shell
démarrera un shell dans un nouveau tampon (ou basculera vers un tampon shell existant, s'il y en a un). S'il s'agit d'un nouveau tampon shell, il sera démarré dans le répertoire du fichier visité dans le tampon courant. S'il s'agit d'un tampon shell existant, il sera toujours dans le répertoire où vous l'avez laissé après sa dernière utilisation. Afin d'obtenir toujours le comportement que vous souhaitez, n'oubliez pas de tuer le tampon shell lorsque vous en avez fini avec ( C-x k
)
Si M-x shell
c'est trop de frappe, vous pouvez définir une clé globale pour démarrer un shell pour vous. Quelque chose comme (global-set-key (kbd "C-x S") 'shell)
dans votre fichier de démarrage devrait le faire (mais attention à ne pas masquer une autre commande utile avec votre raccourci!)
De plus, sachez qu'il s'agit d'un "terminal stupide", donc certaines commandes comme des git commit
options comme -m
et les mots de passe seront en clair sur votre écran.
Je voulais exécuter une application terminal dédié, konsole
. Je voulais ouvrir un nouvel onglet dans konsole s'il est en cours d'exécution, ou en lancer un s'il ne l'est pas.
Depuis que j'étais plus jeune à l'époque, j'ai divisé l'implémentation entre emacs et bash. J'appelle le defun suivant d'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*")))
Le defun appelle le script 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
La plupart du temps, j'utilise shell-mode
. J'utilise donc beaucoup shell-here . Mais quand j'ai besoin d'un terminal externe. J'utilise urxvt-client avec tmux en utilisant ceci:
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"))
Cela ouvrira urxvt-client (avec tmux) dans votre répertoire actuel. Je le lie dans dired-mode-map.
(use-package dired
:ensure nil
:ensure-system-package urxvt
:bind ((:map dired-mode-map
("," . term-here))))
Je choisis urxvt-client car c'est simple et rapide. N'oubliez pas d'exécuter votre démon urxvt au démarrage.
Si le helm
framework de complétion est installé, vous pouvez utiliser helm-run-external-command (C-x c C-c C-x)
pour exécuter un émulateur de terminal de votre choix ou tout autre programme externe dans le répertoire du tampon actuel.
M-x term
, ça a l'air sympa mais ce n'est pas exactement ce que je veux. Je ne veux pas démarrer un shell (par exemplebash
ouzsh
dans un tampon emacs mais un émulateur de terminal (xterm
ouurxvt
...).