Uzaktaki ana bilgisayardaki ~/bin/ecyolumda emacsclient için kısa bir senaryo var.
#!/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[@]}"
Bu komut dosyası , emacsclient'e değişmeden geçer -nve +değişmez, aksi takdirde, argümanlar yerel Emac'larınızın açılması için dosya olarak kabul edilir. Her bir dosyaya TRAMP protokolü ve ana bilgisayar eklenmiştir, böylece Emacs onu nasıl açacağını bilir. İsterseniz ssh:farklı bir TRAMP protokolüne geçebilirsiniz.
zUzak makinenizin ana bilgisayar adı ile değiştirmeniz gerekir . Bu, TRAMP ile bağlanmak için yerel Emacs tarafından kullanılır. (Kullanılacak mümkün olabilir hostnamegenelliği burada. Ben gibi minik girdileri kullanmayı tercih zbenim yerel ssh_configkısalık için ve uzak Bunu yapmamın hiçbir fikri yok. Deneyin!)
Kullanımı:
ec file uzaktaki kabukta yerel Emacs'ta dosya açılır ve bekler
ec -n file uzaktaki kabukta yerel Emacs'ta dosya açılır ve döner
export EDITOR=~/bin/ecuzaktan kumandada .bashrcsihir gerçekleşir
Benim sağlamak için serverdosya benim yerel bu var iyidir .emacsyine minik hostname kullanarak 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)
Bağlantı Noktası 9999, RemoteForward'tır. Bunu ~/.ssh/ssh_configyönlendirmeyi otomatikleştirmek için yerel bölgeme ve hız için ControlMaster malzemelerine koydum .
Host z
HostName dev.example.com
User dev
ControlMaster auto
ControlPath ~/.ssh/z.sock
RemoteForward 9999 localhost:9999
Son olarak, ssh_configeğer kullanırsanız TRAMP'in sizin hakkınızda bildiğinden emin olun :
(require 'tramp)
(tramp-set-completion-function "ssh"
'((tramp-parse-sconfig "~/.ssh/config")))
with-editorkütüphanenin soru ile olan ilişkisini açıklayabilir misiniz ? Yararlı sesler