使用 Emacs 中的 ERC,如何自动为服务器缓冲区名称添加别名?

使用 Emacs 中的 ERC,如何自动为服务器缓冲区名称添加别名?

我使用 ZNC 连接到 IRC,由于 ZNC 似乎有一个令人不快的特性,即让我为每个想要连接的服务器(即 Freenode 和 Quakenet)创建一个新的“登录名”,所以当 erc 启动时,我会得到一堆缓冲区,它们都以相同的名称命名。

我的 ERC 配置如下:

(defun djcb-erc-start-or-switch ()
  "Connect to ERC, or switch to last active buffer"
  (interactive)
  (if (get-buffer "example.com:60667") ;; ERC already active?

    (erc-track-switch-buffer 1) ;; yes: switch to last active
    (when (y-or-n-p "Start ERC? ") ;; no: maybe start ERC
      ;; I use ZNC so I need to hit my server
      (erc :server "example.com" :port 60667 :nick "nick1")
      (erc :server "example.com" :port 60667 :nick "nick2")
)))

我怎样才能让它启动并为nick1toFreenodenick2to设置服务器缓冲区名称的别名whateverrandomserver

答案1

编辑 30-12-2020:在遇到同样的问题并找到自己的答案后,我深入挖掘了一下,找到了一种更清晰的解决方法。

我有一个稍微复杂一点的设置,其中涉及一个 ZNC 弹跳器,并且我有多个凭证,但对我有帮助的关键设置是以下 ERC 设置

(setq erc-rename-buffers t)

根据文档If non, nil, this will rename server buffers to reflect the current network name instead of IP:PORT

因此,ERC 不会拥有一堆同名的服务器,而是会将缓冲区重命名为网络名称(我认为这是由 IRC 网络本身提供的)。

当使用它时,我认为在您的情况下,您可以使用一个函数来找到这些缓冲区(因为它们的名称始终相同)并根据您的喜好重命名它们。

希望能帮助到你!


它不是完美的解决方案,因为我仍在寻找它并且没有什么进展...但你可以做的是从 DNS 的角度而不是 emacs 的角度来解决问题。

我的意思是添加本地 DNS 条目,例如:

whateverrandomserver => <also ip address of example.com>

/etc/hosts这可以通过在基于 *nix 的系统上或基于Windows 的系统上更改文件来完成%SystemRoot%\System32\drivers\etc\hosts。这相当简单,因为这些文件本质上是域名和 IP 地址之间的空格分隔映射。只需添加一个包含这些条目的新行即可。

然后基本上让 emacs 使用不同的域名连接到本质上相同的服务器,这样,你就为不同的服务器获得了不同的缓冲区名称。

如果你确实遇到了适合 emacs 的解决方案,请分享!

相关内容