1台のコンピューターでemacsを実行できるようにしたい:
server $ emacs --daemon
そして、別から接続します:
local $ emacsclient -c server
これは可能ですか?もしそうなら、どのように?
1台のコンピューターでemacsを実行できるようにしたい:
server $ emacs --daemon
そして、別から接続します:
local $ emacsclient -c server
これは可能ですか?もしそうなら、どのように?
回答:
emacsclientを使用して、リモートコンピューターで実行されているEmacsインスタンスに接続することはできません。このクライアント/サーバーの概念は、ネットワークノードではなく、(ローカル)プロセスに関連しています。しかし、あなたがすることができ、リモートコンピュータにログインするために、様々なネットワーク技術を使用し、そこに実行しているEmacsのサーバーに接続し、ローカルのemacsclientの画面を表示します。使用するオペレーティングシステムによっては、SSH(ターミナル/ Xフォワーディング)、VNC、RDPなどを介してネットワーキングを実行できます。
更新:
一部の人々が指摘したように、実際にはemacsclientにはTCP経由でサーバーに接続するオプションがあります。ただし、emacsclientはリモートで使用することを意図したものではなく、非UNIXシステム(WindowsなどのUNIXドメインソケットが利用できないオペレーティングシステム)との互換性のためにTCPソケットオプションが必要です。
これはあなたが望むものではないかもしれませんが、念のためにそれが何らかの方法であなたを助けることができるかどうか確かめてください。
私は通常、Vagrantでブートストラップされた仮想マシン内で作業し~/.emacs.d
ます。マシン(ローカル)と仮想マシン(リモート)の間でディレクトリを同期し、Vagrantfile
ファイルに次のものを入れます。
config.vm.synced_folder "~/.emacs.d", "/home/vagrant/.emacs.d"
また、私のEmacs設定は起動時に自動的にサーバーを起動します:
(require 'server)
(setq server-use-tcp t
server-socket-dir "~/.emacs.d/server")
(unless (server-running-p)
(server-start))
したがって、仮想マシン内でEmacsサーバーを起動すると、次の方法で接続できます。
ssh -Y -i ~/.vagrant.d/insecure_private_key "<virtual machine hostname>" 'emacsclient -c -f ~/.emacs.d/server/server'
仮想マシンのホスト名は、〜/ .ssh / configで構成した仮想マシンのホスト名です。
Host <virtual machine hostname>
HostName 127.0.0.1
User vagrant
Port 2222
UserKnownHostsFile /dev/null
StrictHostKeyChecking no
PasswordAuthentication no
IdentityFile /home/anler/.vagrant.d/insecure_private_key
IdentitiesOnly yes
LogLevel FATAL
ForwardAgent yes
注:仮想マシン内でEmacsサーバーを起動する前に、~/.emacs.d/server/server
ファイルが存在しないことを確認します(存在しない場合は削除するだけです)。
.ssh/config
。を指定するだけですHost
。疑わしい場合は、コマンドの出力を使用しvagrant ssh-config
て~/.ssh/config
ファイルを設定できます。