मेरे पास दूरस्थ होस्ट पर अपने पथ पर एक छोटी सी स्क्रिप्ट है ~/bin/ec
, जो कि शालीनता के लिए शॉर्टहैंड है।
#!/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[@]}"
यह स्क्रिप्ट गुजरती है -n
और +
खाली करने के लिए अपरिवर्तित होती है, अन्यथा आपके स्थानीय Emacs को खोलने के लिए args को फ़ाइलों के रूप में माना जाता है। प्रत्येक फ़ाइल को TRAMP प्रोटोकॉल के साथ उपसर्ग किया जाता है और इसलिए Emacs इसे खोलना जानता है। ssh:
यदि आप चाहें तो आप एक अलग TRAMP प्रोटोकॉल में बदल सकते हैं।
आपको z
अपने दूरस्थ मशीन के होस्टनाम से बदलना होगा । इसका उपयोग स्थानीय Emacs द्वारा TRAMP के माध्यम से जुड़ने के लिए किया जाता है। (आप hostname
सामान्यता के लिए यहाँ उपयोग करने में सक्षम हो सकते हैं । मैं z
अपने स्थानीय में छोटे प्रविष्टियों का उपयोग करना पसंद करता हूँ ssh_config
, और रिमोट का कोई मतलब नहीं है कि मैं यह कर रहा हूँ। यह कोशिश करो!)
उपयोग:
ec file
दूरदराज के खोल में स्थानीय Emacs और इंतजार में फ़ाइल खोलता है
ec -n file
दूरदराज के खोल में स्थानीय Emacs और रिटर्न में फ़ाइल खोलता है
export EDITOR=~/bin/ec
रिमोट .bashrc
में जादू होता है
यह सुनिश्चित करने के लिए कि मेरी server
फ़ाइल अच्छी है, मेरे पास अपने स्थानीय में है .emacs
, फिर से छोटे होस्टनाम का उपयोग करके 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)
पोर्ट 9999 एक रिमोटफॉरवर्ड है। मैंने इसे अपने स्थानीय ~/.ssh/ssh_config
में अग्रेषण को स्वचालित करने के लिए रखा , साथ ही स्पीड के लिए कंट्रोलमास्टर सामान।
Host z
HostName dev.example.com
User dev
ControlMaster auto
ControlPath ~/.ssh/z.sock
RemoteForward 9999 localhost:9999
अंत में, सुनिश्चित करें कि ssh_config
यदि आप इसका उपयोग करते हैं तो ट्रम्प आपके बारे में जानते हैं :
(require 'tramp)
(tramp-set-completion-function "ssh"
'((tramp-parse-sconfig "~/.ssh/config")))
with-editor
पुस्तकालय प्रश्न से कैसे संबंधित है? उपयोगी लगता है