私はさまざまな会社で働いているサーバー上に、さまざまな仕事固有の.emacs構成ファイルを持っています。これらは、さまざまな理由で、自分のマシンにローカルに保存したくないパッケージです。それらのリモートディレクトリの1つをローカルであるかのように使用してemacsを起動する方法はありますか?
Trampは、リモートファイルをローカルであるかのように実際に編集するのに最適です。今度は、同じ方法でemacsエディター全体を起動できるようにしたいと思います。
好奇心から、私はこれを試してみました:
emacs -q --load "/ssh:USER@HOSTNAME:.emacs.d/init.el"
それは機能しましたが、リモートのinit.elは「〜/ .emacs.d / vendor /」のようなロードパスを設定しているため、実際にはinitファイルは、設定するパスとファイル名が共通ベースに相対的である必要があることを認識する必要があります。 。このベースは共通の変数で設定できるので、次のことを試してください。
emacs -q --eval '(setq init-base "/ssh:USER@HOSTNAME:") (load (concat init-base ".emacs.d/init.el"))'
次に、リモート構成で、リモートinit-base
に設定するパスまたはファイル名の前に追加します。
それらのリモートディレクトリの1つをローカルであるかのように使用してemacsを起動します
サーバーがunix/linuxサーバーであり、sshアクセスがある場合は、SSHファイルシステムを試すことができます。次に、サーバーをローカルディレクトリにマウントできます。例:
> sshfs server1: ~/remote/server1
> sshfs server2: ~/remote/server2
次に、emacsをなどで開始できますemacs --no-init-file --load ~/remote/servers2/.emacs
。
さまざまな理由で、ローカルに保存したくないパッケージ
パッケージがリモートマシンの.emacs.dにインストールされている場合、ローカルマシンで次のようなスクリプトを作成できます。
;; .emacs.server1.el
(add-to-list 'load-path (expand-file-name "~/remote/server1/.emacs.d"))
(add-to-list 'load-path (expand-file-name "~/remote/server1/.emacs.d/package1"))
(load (expand-file-name "~/remote/server1/.emacs"))
そして、次のようにemacsを起動します。emacs --no-init-file --load ~/.emacs.server1.el
明らかに、このスクリプトは上記のマウントに依存します。
sshセッションからのemacsトランプを使用したリモートファイルの元の編集が関連する問題の解決策を求めているというSOの質問を見つけることができます。おそらく、そこにある答えがあなたが望むものを与えるかもしれません。つまり、リモートマシンで実行されているemacsに接続できます。