Nyissa meg a terminált az emacs-ból
On február 14, 2021 by adminVan-e gyors mód (billentyűparancs) terminálemulátor (esetemben urxvt) megnyitására az ugyanabban a könyvtárban fájlként az emacs jelenlegi pufferében?
Válasz
A M-!
lehetővé teszi a shell parancsok elindítását. Használhatja külön urxvt
indításához.
M-! urxvt RET
Most próbáltam ki a xterm
szolgáltatással (nekem nincs urxvt
), és ugyanabban a könyvtárban nyílt meg, mint a puffer fájlja.
Ha parancsikont szeretne definiálni, adjon hozzá valami hasonlót az init fájlban:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
Esetemben a következő parancsra kötöttem: Ctrl + C – S .
Válasz
Általában a M-x term
szót használom.
fizetés:
-
M-x terminal
-
M-x shell
M-x term
hatékonyan elindítja az elisp nyelven írt terminálemulátort. A súgóból:
kifejezés
Mx … RET Terminál-emulátor indítása új pufferben. (PROGRAM kifejezés)A kifejezés egy interaktív fordított Lisp függvény a” term.el “.
Indítson el egy terminál-emulátort egy új pufferben. A puffer Term módban van; lásd a `term-mode részt az adott pufferben használandó parancsokról.
Írja be a Cc b parancsot, ha másik pufferre szeretne váltani.
megjegyzések
Válasz
Az emacs parancsot M-x shell
egy héjat egy új pufferben indít (vagy átkapcsol egy meglévő héjpufferre, ha van ilyen). Ha “új héjpuffert tartalmaz”, akkor a az aktuális pufferben meglátogatott fájl. Ha létező shell puffer, akkor is abban a könyvtárban lesz, ahová az utolsó használat után hagytad. r, hogy mindig megkapd a kívánt viselkedést, ne felejtsd el megölni a shell puffert, ha kész vagy vele (C-x k
)
Ha M-x shell
túl sok a gépelés, beállíthat egy globális kulcsot egy shell indításához. Valami ilyesmi, mint (global-set-key (kbd "C-x S") "shell)
az indítófájlban, ezt meg kell tennie (de vigyázzon, ne maszkoljon egy másik hasznos parancsot a parancsikonjával!)
Vegye figyelembe, hogy ez egy “buta terminál”, ezért egyes parancsok, például a git commit
opciókra van szükségük, mint például a -m
, és a jelszavak a szöveg egyszerű szövegében lesznek.
Válasz
Egy dedikált terminálalkalmazást akartam futtatni, konsole
. Meg akartam nyitni egy új lapot a konsole-ban, ha fut, vagy feltölteni egyet, ha nem.
Mivel még fiatalabb voltam, akkor megosztottam az implementációt az emacs és a bash között. A következő defun-t hívom emacs-ból:
(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*")))
A defun hívja a bash szkriptet, 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
Válasz
Legtöbbször a shell-mode
-t használom. Tehát erősen használom az shell-here alkalmazást. De amikor külső terminálra van szükségem. Az urxvt-klienst a tmux-szal használom ezzel:
- Hozzon létre “term-here” nevű fájlt a / usr / local / bin / tartalmazó
urxvtc -e bash -c "tmux -q has-session && exec tmux attach-session -d || exec tmux new-session -n$USER -s$USER@$HOSTNAME"
- Hozzon létre új függvényt az emacs-ban
(defun term-here () (interactive) (start-process "" nil "term-here"))
- Kösse be kedvenc kulcsát
Ez megnyitja az urxvt-klienst (tmux-szal) az aktuális könyvtárban. Dired-mode-map-ba kötöm.
(use-package dired :ensure nil :ensure-system-package urxvt :bind ((:map dired-mode-map ("," . term-here))))
Az urxvt-klienst választom, mert gyors és egyszerű. Ne felejtse el futtatni az urxvt-démont az indításkor.
Válasz
Ha a helm
befejezési keretrendszer telepítve, a helm-run-external-command (C-x c C-c C-x)
segítségével futtathatja a kívánt terminál-emulátort, vagy bármely más külső programot az aktuális puffer könyvtárában.
M-x term
, szépnek tűnik, de nem pontosan az, amit szeretnék. Nem egy shellt szeretnék elindítani (példáulbash
vagyzsh
emacs pufferben, de terminál emulátorban (xterm
vagyurxvt
…).multi-term