我使用 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")
)))
我怎样才能让它启动并为nick1
toFreenode
和nick2
to设置服务器缓冲区名称的别名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 的解决方案,请分享!