UP | HOME

▼ 本文更新于 [2026-05-03 日 19:50]

emacs-用tramp-rpc加速tramp


1. Tramp是什么

Tramp 使用指南 :
Tramp 是 Emacs 中用来编辑远端文件的模块,全称为『Transparent Remote (file) Access, Multiple Protocol』,类似与 VSCode 的 Remote Development,只不过比它年长 20 岁而已 。

比VSCode的远程部署更年长,所以采用的技术方案也与vscode不同,不需要在远程机器部署二进制包,而是通过ssh等多种协议访问远程文件。也正因如此,在一些时候响应速度令人发指,往往会让人觉得emacs被卡死了(可能事实也确实是卡死在等待数据中)。

正好,tramp-rpc包通过采取与vscode相同的技术,通过在远程服务器上部署一个RUST编写的二进制文件,提升tramp的响应速度:

概述

传统的 TRAMP 通过 SSH 管道传输 shell 命令并解析其输出。这种方式虽然稳健但速度较慢,尤其对于需要多次往返的操作(如目录列表或版本控制操作)。
TRAMP-RPC 采用在远程主机上运行的轻量级 Rust 服务器来替代传统方式。Emacs 通过 SSH 使用 MessagePack-RPC 与其通信,从而显著提升文件操作速度。

2. tramp-rpc配置

首先我们启用 tramptramp-rpc 。由于 tramp-rpc 还未上melpa,因此这里通过emacs30以后内置的 :vc 方式下载:

(use-package tramp)
(use-package tramp-rpc
  :after tramp :demand t
  :vc (:url "git@github.com:ArthurHeymans/emacs-tramp-rpc.git"
       :rev :newest
       :lisp-dir "lisp")

这里通过替换github链接,实现无代理加速下载二进制包

  :custom
  (tramp-rpc-deploy-release-url-format "https://gh-proxy.org/https://github.com/%s/releases/download/v%s/%s")

这里设置默认方式为 rpc ,使我们可以在 C-x C-f 后通过 /-: 来替代 /rpc:

  :config
  (setq tramp-default-method "rpc")

根据这个issue,「ControlMaster 选项仅适用于 UNIX/Linux 系统」,所以我们在Windows使用时需要禁用它。

  (when (eq system-type 'windows-nt)
    (setq tramp-rpc-use-controlmaster nil)))

通过下列变量设置,将tramp文件挪出我的.emacs.d(因为我在用git同步整个.emacs.d文件夹)

(setq tramp-persistency-file-name "~/emacs-local/tramp")

3. 操作说明

4. 配置文件

(files--ensure-directory my/desktop-path)
(let ((file "tramp-rpc-config.txt"))
  (org-babel-tangle-file (buffer-file-name) (concat my/desktop-path file) "elisp")
  (format "[[https://blog.prayhand13013.top/%s][一键查看上述配置代码汇总]]" file))

一键查看上述配置代码汇总

© Published by Emacs 31.0.50 (Org mode 10.0-pre) | RSS Comment