Saya memiliki skrip kecil di jalur saya di host jarak jauh di ~/bin/ec, singkatan untuk 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[@]}"
Script ini lolos -ndan +args tidak berubah menjadi emacsclient, jika tidak args diperlakukan sebagai file untuk dibuka oleh Emacs lokal Anda. Setiap file diawali dengan protokol TRAMP dan host sehingga Emacs tahu cara membukanya. Anda mungkin dapat mengubah ssh:ke protokol TRAMP yang berbeda jika Anda mau.
Anda harus mengganti zdengan nama host mesin jarak jauh Anda. Ini digunakan oleh Emacs lokal untuk terhubung melalui TRAMP. (Anda mungkin dapat menggunakan di hostnamesini untuk umum. Saya lebih suka menggunakan entri kecil seperti zdi lokal saya ssh_configuntuk singkatnya, dan remote tidak tahu saya melakukan ini. Cobalah!)
Pemakaian:
ec file di shell jauh membuka file di Emacs lokal dan menunggu
ec -n file di shell jauh membuka file di Emacs lokal dan kembali
export EDITOR=~/bin/ecdi jarak jauh .bashrcmembuat keajaiban terjadi
Untuk memastikan serverfile saya bagus saya punya ini di lokal saya .emacs, lagi menggunakan nama host kecil 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)
Port 9999 adalah RemoteForward. Saya menempatkan ini di lokal saya ~/.ssh/ssh_configuntuk mengotomatiskan penerusan, ditambah hal-hal ControlMaster untuk kecepatan.
Host z
HostName dev.example.com
User dev
ControlMaster auto
ControlPath ~/.ssh/z.sock
RemoteForward 9999 localhost:9999
Akhirnya, pastikan TRAMP tahu tentang Anda ssh_configjika Anda menggunakannya:
(require 'tramp)
(tramp-set-completion-function "ssh"
'((tramp-parse-sconfig "~/.ssh/config")))
with-editorperpustakaan ini berhubungan dengan pertanyaan? Kedengarannya bermanfaat