Uzaktaki ana bilgisayardaki ~/bin/ec
yolumda 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 -n
ve +
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.
z
Uzak 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 hostname
genelliği burada. Ben gibi minik girdileri kullanmayı tercih z
benim yerel ssh_config
kı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/ec
uzaktan kumandada .bashrc
sihir gerçekleşir
Benim sağlamak için server
dosya benim yerel bu var iyidir .emacs
yine 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_config
yö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_config
eğ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-editor
kütüphanenin soru ile olan ilişkisini açıklayabilir misiniz ? Yararlı sesler