Tôi có một đoạn script nhỏ trong đường dẫn của tôi trên máy chủ từ xa ~/bin/ec, tốc ký cho 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[@]}"
Kịch bản lệnh này chuyển -nvà lập luận +không thay đổi thành emacsclient, nếu không thì các đối số được coi là các tệp để Emacs cục bộ của bạn mở. Mỗi tệp có tiền tố với giao thức TRAMP và máy chủ lưu trữ để Emacs biết cách mở nó. Bạn có thể thay đổi ssh:sang một giao thức TRAMP khác nếu muốn.
Bạn phải thay thế zbằng tên máy chủ của máy từ xa. Điều này được sử dụng bởi Emacs cục bộ để kết nối thông qua TRAMP. (Bạn có thể có thể sử dụng hostnamevào đây để tính tổng quát. Tôi thích sử dụng các mục nhỏ như ztrong địa phương của tôi ssh_configcho ngắn gọn, và điều khiển từ xa không có ý tưởng tôi đang làm điều này. Hãy thử nó!)
Sử dụng:
ec file trong shell từ xa mở tập tin trong Emacs cục bộ và chờ đợi
ec -n file trong shell từ xa mở tập tin trong Emacs cục bộ và trả về
export EDITOR=~/bin/ecở xa .bashrclàm cho phép thuật xảy ra
Để đảm bảo servertệp của tôi tốt, tôi có tệp này trong địa phương của mình .emacs, một lần nữa sử dụng tên máy chủ nhỏ 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)
Cổng 9999 là RemoteForward. Tôi đặt cái này ở địa phương ~/.ssh/ssh_configđể tự động chuyển tiếp, cộng với công cụ ControlMaster cho tốc độ.
Host z
HostName dev.example.com
User dev
ControlMaster auto
ControlPath ~/.ssh/z.sock
RemoteForward 9999 localhost:9999
Cuối cùng, hãy đảm bảo TRAMP biết về bạn ssh_confignếu bạn sử dụng nó:
(require 'tramp)
(tramp-set-completion-function "ssh"
'((tramp-parse-sconfig "~/.ssh/config")))
with-editorthư viện này liên quan đến câu hỏi? Âm thanh hữu ích