Respostas:
A combinação M-!
permite iniciar comandos de shell. Você pode usá-lo para iniciar um separado urxvt
.
M-! urxvt RET
Eu apenas tentei com xterm
(não tenho urxvt
) e ele abriu no mesmo diretório que o arquivo no buffer.
Se você deseja definir um atalho, adicione algo semelhante no seu arquivo init:
(global-set-key (kbd "C-c s") (kbd "M-! urxvt RET"))
No meu caso, vinculei o atalho a: Ctrl+ C- S.
Eu costumo usar M-x term
.
Você também pode fazer o checkout:
M-x terminal
M-x shell
M-x term
está lançando efetivamente um emulador de terminal escrito em elisp. Da ajuda:
termo
M-x ... RET Inicie um emulador de terminal em um novo buffer. (termo PROGRAMA)term é uma função Lisp interativa compilada em `term.el '.
Inicie um emulador de terminal em um novo buffer. O buffer está no modo Term; veja `term-mode ' para os comandos a serem usados nesse buffer.
Digite Cc b para alternar para outro buffer.
multi-term
O comando emacs M-x shell
iniciará um shell em um novo buffer (ou mudará para um buffer de shell existente, se houver um). Se for um novo buffer de shell, ele será iniciado no diretório do arquivo que está sendo visitado no buffer atual. Se houver um buffer de shell existente, ele ainda estará no diretório em que você o deixou após o último uso. Para sempre obter o comportamento desejado, lembre-se de eliminar o buffer do shell quando terminar ( C-x k
)
Se M-x shell
houver muita digitação, você pode definir uma chave global para iniciar um shell para você. Algo como (global-set-key (kbd "C-x S") 'shell)
no seu arquivo de inicialização deve fazer isso (mas tenha cuidado para não mascarar outro comando útil com o seu atalho!)
Além disso, esteja ciente de que este é um "terminal burro", portanto alguns comandos, como as git commit
opções necessárias -m
e as senhas, estarão em texto simples na tela.
Eu queria executar um aplicativo de terminal dedicado konsole
,. Eu queria abrir uma nova aba no konsole, se estiver em execução, ou iniciar uma, se não estiver.
Desde que eu era mais jovem, então dividi a implementação entre emacs e bash. Eu chamo o seguinte defun do 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*")))
O defun chama o 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
Na maioria das vezes eu uso shell-mode
. Então, eu uso muito o shell-aqui . Mas quando eu preciso de terminal externo. Eu uso o urxvt-client com tmux usando este:
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"))
Isso abrirá o urxvt-client (com tmux) em seu diretório atual. Eu o vinculo no mapa de modo direcionado.
(use-package dired
:ensure nil
:ensure-system-package urxvt
:bind ((:map dired-mode-map
("," . term-here))))
Eu escolho o urxvt-client porque é rápido e simples. Não se esqueça de executar o seu urxvt-daemon na inicialização.
Se você tiver a helm
estrutura de conclusão instalada, poderá helm-run-external-command (C-x c C-c C-x)
executar um emulador de terminal de sua escolha ou qualquer outro programa externo no diretório do buffer atual.
M-x term
, parece bom, mas não é exatamente o que eu quero. Eu quero começar não um shell (por exemplo,bash
ouzsh
em um emacs tampão, mas um emulador de terminal (xterm
ouurxvt
...).