원격 호스트의 경로에 작은 스크립트가 있으며 ~/bin/ec
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[@]}"
이 스크립트 패스 -n
와 +
는 emacsclient에 변경 인수는, 그렇지 않으면 인수는 열 지역 이맥스에 대한 파일로 처리됩니다. 각 파일은 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는 RemoteForward입니다. 나는 이것을 로컬 ~/.ssh/ssh_config
에 넣어서 포워딩을 자동화하고 ControlMaster를 속도를 높였습니다.
Host z
HostName dev.example.com
User dev
ControlMaster auto
ControlPath ~/.ssh/z.sock
RemoteForward 9999 localhost:9999
마지막으로, TRAMP ssh_config
를 사용하는 경우 TRAMP가 알고 있는지 확인하십시오 .
(require 'tramp)
(tramp-set-completion-function "ssh"
'((tramp-parse-sconfig "~/.ssh/config")))
with-editor
라이브러리가 질문과 어떻게 관련 되는지 자세히 설명해 주 시겠습니까? 유용한 것