Ho un piccolo script nel mio percorso sull'host remoto su ~/bin/ec, stenografia per emacsclient.
#!/bin/bash
params=()
for p in "$@"; do
if [ "$p" == "-n" ]; then
params+=( "$p" )
elif [ "${p:0:1}" == "+" ]; then
params+=( "$p" )
else
params+=( "/ssh:z:"$(readlink -f $p) )
fi
done
emacsclient --server-file=$HOME/.emacs.d/server/server "${params[@]}"
Questo script passa -ne gli +argomenti sono invariati rispetto a emacsclient, altrimenti gli argomenti vengono trattati come file per l'apertura di Emacs locale. Ogni file è preceduto dal protocollo TRAMP e dall'host in modo che Emacs sappia come aprirlo. ssh:Se lo desideri, potresti essere in grado di passare a un protocollo TRAMP diverso.
È necessario sostituire zcon il nome host del computer remoto. Viene utilizzato da Emacs locale per connettersi tramite TRAMP. (Potresti essere in grado di utilizzare hostnamequi per generalità. Preferisco usare piccole voci come znel mio locale ssh_configper brevità, e il telecomando non ha idea che lo stia facendo. Provalo!)
Uso:
ec file nella shell remota apre il file in Emacs locale e attende
ec -n file nella shell remota apre il file in Emacs locale e ritorna
export EDITOR=~/bin/ecin remoto .bashrcfa accadere la magia
Per essere sicuro che il mio serverfile sia buono, lo ho nel mio locale .emacs, usando di nuovo il piccolo nome host z:
(setq server-use-tcp t
server-port 9999)
(defun server-start-and-copy ()
"Start server and copy server file to remote box."
(interactive)
(server-start)
(copy-file "~/.emacs.d/server/server" "/z:.emacs.d/server/server" t)
(chmod "/z:.emacs.d/server/server" (string-to-number "644" 8))
)
(add-hook 'emacs-startup-hook 'server-start-and-copy)
La porta 9999 è RemoteForward. L'ho messo nel mio locale ~/.ssh/ssh_configper automatizzare l'inoltro, più le cose ControlMaster per la velocità.
Host z
HostName dev.example.com
User dev
ControlMaster auto
ControlPath ~/.ssh/z.sock
RemoteForward 9999 localhost:9999
Infine, assicurati che TRAMP sia a conoscenza del tuo ssh_configse lo usi:
(require 'tramp)
(tramp-set-completion-function "ssh"
'((tramp-parse-sconfig "~/.ssh/config")))
with-editorbiblioteca si collega alla domanda? Sembra utile