J'ai un petit script sur mon chemin sur l'hôte distant à ~/bin/ec
, raccourci pour 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[@]}"
Ce script passe -n
et +
args inchangé à emacsclient, sinon les args sont traités comme des fichiers que votre Emacs local peut ouvrir. Chaque fichier est préfixé avec le protocole TRAMP et l’hôte afin que Emacs sache l’ouvrir. Vous pourrez peut-être changer ssh:
de protocole TRAMP si vous préférez.
Vous devez remplacer z
par le nom d'hôte de votre ordinateur distant. Emacs local utilise cette méthode pour se connecter via TRAMP. (Vous pourriez peut-être utiliser hostname
ici pour la généralité. Je préfère utiliser des entrées minuscules comme z
dans mon local ssh_config
pour la brièveté, et la télécommande n'a aucune idée de ce que je suis en train de faire. Essayez-le!)
Usage:
ec file
dans le shell distant ouvre le fichier dans Emacs local et attend
ec -n file
dans le shell distant ouvre le fichier dans Emacs local et retourne
export EDITOR=~/bin/ec
à distance .bashrc
rend la magie arriver
Pour m'assurer que mon server
fichier est bon, j'ai ceci dans mon local .emacs
, en utilisant à nouveau le petit nom d'hôte 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)
Le port 9999 est une RemoteForward. Je mets cela dans mon local ~/.ssh/ssh_config
pour automatiser le transfert, ainsi que le logiciel ControlMaster pour plus de rapidité.
Host z
HostName dev.example.com
User dev
ControlMaster auto
ControlPath ~/.ssh/z.sock
RemoteForward 9999 localhost:9999
Enfin, assurez-vous que TRAMP sait ssh_config
si vous l'utilisez:
(require 'tramp)
(tramp-set-completion-function "ssh"
'((tramp-parse-sconfig "~/.ssh/config")))
with-editor
bibliothèque et la question? Cela semble utile