Ouvrir le terminal depuis emacs
On février 14, 2021 by adminExiste-t-il un moyen rapide (raccourci clavier) douvrir un émulateur de terminal (dans mon cas urxvt) dans le même répertoire comme fichier dans le tampon emacs actuel?
Réponse
La combinaison M-!
vous permet de lancer des commandes shell. Vous pouvez lutiliser pour lancer un urxvt
distinct.
M-! urxvt RET
Je viens de lessayer avec xterm
(je nai pas urxvt
) et il sest ouvert dans le même répertoire que le fichier dans le tampon.
Si vous voulez 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, jai lié le raccourci à: Ctrl + C – S .
Réponse
Jutilise habituellement M-x term
.
Vous pouvez également paiement:
-
M-x terminal
-
M-x shell
M-x term
lance effectivement un émulateur de terminal écrit en elisp. Depuis laide:
term
Mx … RET Démarrer un émulateur de terminal dans un nouveau tampon. (terme PROGRAMME)Le terme est une fonction Lisp compilée interactive dans` term.el « .
Démarre 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 passer à un autre tampon.
Commentaires
Answer
La commande emacs M-x shell
démarrera un shell dans un nouveau tampon (ou basculera vers un tampon shell existant, sil y en a un). Sil « sagit dun nouveau tampon shell, il » sera lancé dans le répertoire de le fichier visité dans le tampon courant. Sil sagit dun tampon shell existant, il sera toujours dans le répertoire où vous lavez laissé après sa dernière utilisation. En orde r pour toujours obtenir le comportement que vous souhaitez, noubliez pas de tuer le tampon du shell lorsque vous en avez terminé (C-x k
)
Si M-x shell
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 faites attention à ne pas masquer une autre commande utile avec votre raccourci!)
Aussi, sachez que cest un « dumb terminal » donc certaines commandes comme git commit
nécessitent des options comme -m
et les mots de passe seront en texte clair sur votre écran.
Réponse
Je voulais exécuter une application de terminal dédiée, konsole
. Je voulais ouvrir un nouvel onglet dans konsole sil est en cours dexécution, ou en activer un sil ne lest pas.
Depuis que jétais plus jeune à lépoque, jai divisé limplémentation entre emacs et bash. Jappelle le defun suivant depuis 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
Réponse
La plupart du temps, jutilise shell-mode
. Jutilise donc beaucoup shell-here . Mais quand jai besoin dun terminal externe. Jutilise urxvt-client avec tmux en utilisant ceci:
- Créer un fichier nommé « term-here » dans / usr / local / bin / contenant
urxvtc -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
- Créer une nouvelle fonction dans emacs
(defun term-here () (interactive) (start-process "" nil "term-here"))
- Lier à votre clé préférée
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))))
Jai choisi urxvt-client car il est simple et rapide. Noubliez pas dexécuter votre démon urxvt au démarrage.
Réponse
Si vous avez le helm
framework de complétion 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 courant.
M-x term
, ça a lair sympa mais ce nest 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
…).multi-term