IRC by IRSSI, with Big5/UTF-8 recode
懶人總是要碰到需求了,才會有所行動與長進。
剛剛在 #happydesigner 上被 whiteg 抱怨看不到我的中文,所以趕緊真的去把 irssi with big5/utf8 recode 設好。
此時 wiki.newzilla.org 掛點中,因此看不到其 HowToIRC 與 MiniHowtoUTF8,因此只好求教咕狗大神,找到這篇:《irssi UTF-8 Big5 中文轉換與設定》。這篇比 MiniHowToUTF8 寫的清楚簡單,應該是因為部份環境我已經具備的的緣故。以下整理重點:
首先,我們不必辛苦地編輯 ~/.irssi/config,irssi 會依據使用時所下的指令,自動更新 config 檔。所以,~/.irssi/config 的格式,我們不需要研究,記好下列指令的用法即可:
設定 IRC 網路與伺服器
在 IRC 裡,是由許多個 IRC 伺服器 (server) 分散地串在一起,形成 IRC 網路 (network)。一個 IRC 網路裡面,有著許多的頻道 (channel),只要是在同一個 IRC 網路裡的人,就可以在其中的頻道裡,互相聊天。
因此,我們需要設定我們有哪些 IRC 網路。目前常見的 IRC 頻道,多位於 ircnet 或 freenode 上。因此,我們主要把這兩個 IRC 網路加上去。
/NETWORK ADD -kicks 4 -msgs 1 -modes 4 -whois 1 ircnet /NETWORK ADD -kicks 4 -msgs 1 -modes 4 -whois 1 freenode
並設定我們要藉由哪些 IRC 伺服器,連上 IRC 網路。使用 -auto 我們可以在一進入 irssi 時,就連上這台 IRC 伺服器。使用 -network 則可以讓 irssi 知道,這台 IRC 伺服器,可以用來連上哪一個 IRC 網路。
/SERVER ADD -auto -network ircnet irc.seed.net.tw /SERVER ADD -auto -network freenode asimov.freenode.net
設定 IRC 頻道與聊天記錄
設定好 IRC 網路與伺服器之後,我們就可以設定要加入哪些聊天頻道:
/CHANNEL ADD -auto #bsdchat ircnet /CHANNEL ADD -auto #elixus ircnet/CHANNEL ADD -auto #tkucs ircnet/CHANNEL ADD -auto #coscup ircnet/CHANNEL ADD -auto #osdc.tw freenode /CHANNEL ADD -auto #happydesigner freenode /CHANNEL ADD -auto #cpp-tw freenode /CHANNEL ADD -auto #boost freenode /CHANNEL ADD -auto #svk freenode /CHANNEL ADD -auto #svn freenode
在 IRC 裡,頻道名稱前面會有個井字號,好比說 #bsdchat。指令裡的 -auto 可以讓我們在一開啟 irssi 時,就連上該頻道。在頻道後面的參數,則是說明該頻道要到哪個 IRC 網路上去找。如果我們在 freenode 連 #bsdchat,可是會找不到人的喔。
接著,我們會希望,在 IRC 裡面的聊天內容,可以被 irssi 自動記錄下來。畢竟,通常在裡面可以遇見許多高手,然後獲得許多有用的資訊。
/LOG OPEN -autoopen -targets #bsdchat ~/logs/irc-bsdchat-%Y%m%d /LOG OPEN -autoopen -targets #elixus ~/logs/irc-elixus-%Y%m%d/LOG OPEN -autoopen -targets #tkucs ~/logs/irc-tkucs-%Y%m%d/LOG OPEN -autoopen -targets #coscup ~/logs/irc-coscup-%Y%m%d/LOG OPEN -autoopen -targets #osdc.tw ~/logs/irc-osdc.tw-%Y%m%d /LOG OPEN -autoopen -targets #happydesigner ~/logs/irc-happydesigner-%Y%m%d /LOG OPEN -autoopen -targets #cpp-tw ~/logs/irc-cpp-tw-%Y%m%d /LOG OPEN -autoopen -targets #boost ~/logs/irc-boost-%Y%m%d /LOG OPEN -autoopen -targets #svk ~/logs/irc-svk-%Y%m%d /LOG OPEN -autoopen -targets #svn ~/logs/irc-svn-%Y%m%d
或
/SET autolog_path ~/logs/irc-$tag-$0-%Y%m%d
雖然參數名稱不同,和功能和上面一樣,利用 -autoopen 我們可以在一進入 irssi 時,就自動開啟聊天記錄。使用 -targets 可以指定這個聊天記錄要記錄哪些頻道的內容,理論上可以同時設多個頻道,好比說我們可以另外把所有頻道的聊天內容,都記錄在 ~/logs/irc-all 檔裡。最後一個參數,就是聊天記錄的檔名。可以使用 strftime() 的格式參數,讓 irssi 自動依據時間擇定檔名。如設定成 ~/logs/irc-bsdchat-%Y%m%d 的話,在 2006-12-18 這天的聊天記錄的檔名,就會是 ~/logs/irc-bsdchat-20061218。
設定 recode 讓 irssi 自動依據頻道,幫我們轉換 Big5/UTF-8
Irssi 可以自動幫我們轉碼,讓我們可以同時存取不同編碼的 IRC 頻道。不過,由於 UTF-8 是 Unicode,可以包容萬物,所以我們還是必須得處於 UTF-8 環境下,才有辦法享受到真正的 Big5/UTF-8 共榮的環境。否則,若是處於 Big5 的環境,無論 irssi 的自動轉碼再怎麼強,我們還是只有可能看到 big5 能夠顯現的字。
幸好,UTF-8 環境差不多已經都沒有什麼問題了,大家可以參考我這篇久未整理的舊文《建構 UTF-8 的 UNIX 環境》所收集到的資料,設定好自己的 UTF-8 環境。不過,如果您沒有完整的 UTF-8 環境,也是沒有關係的。只要您的 terminal 軟體,有支援 UTF-8 的顯示與輸入即可。
在 Windows 上,我們可以用 PuTTY,或其中文加強版 PieTTY,在設定頁面的 Window -> Translation 裡,將 "Received data assumed to be in which character set" 設成 UTF-8 即可。或者,如果您有使用 screen,則請記得把要用來跑 irssi 的那個視窗,切成 utf8 模式。
接著,我們用 zh_TW.UTF-8 跑 irssi。如果您有設定好 UTF-8 環境的話,直接跑 irssi 即可。否則,請如下啟動 irssi:
SHELL> env LC_ALL=zh_TW.UTF-8 irssi
如果不是 UTF-8 環境的話,我們可以設 alias 以避免每次都要靠 env 啟動 irssi。請把下面這一行,加入到您的 ~/.cshrc 裡,這樣一來,下次就可以直接用 UTF-8 環境啟動 irssi 了。
alias irssi 'env LC_ALL=zh_TW.UTF-8 irssi'
第一次使用 UTF-8 環境啟動 irssi 之後,我們用以下指令,讓 irssi 知道我們的執行環境,用的是 UTF-8:
/SET term_charset UTF-8
然後,我們用以下指令,啟動並設定 irssi 的 recode 功能。
/SET recode_transliterate ON /SET recode_fallback Big5 /SET recode_out_default_charset UTF-8
接著,我們就可以用 recode 功能,設定並讓 irssi 記住每一個頻道所使用的編碼為何。在我常上的 IRC 頻道裡,freenode 的頻道大都是使用 UTF-8,而 ircnet 的頻道則多半使用 big5。因此,我們如此下指令:
/RECODE ADD #bsdchat Big5 /RECODE ADD #elixus Big5/RECODE ADD #tkucs Big5/RECODE ADD #coscup Big5/RECODE ADD #osdc.tw UTF-8 /RECODE ADD #happydesigner UTF-8 /RECODE ADD #cpp-tw UTF-8 /RECODE ADD #boost UTF-8 /RECODE ADD #svk UTF-8 /RECODE ADD #svn UTF-8
最後,我們離開 irssi 再重新進入,就可以擁有 Big5/UTF-8 皆無往不利的 IRC 環境。
2006-12-19 更新:高手的指點:
07:44 <@c*> jeffhung: #0 可以記錄 channel name
07:44 <@c*> irc-$0-%Y%m%d
07:44 <@c*> $0, not #0 XD sorry
07:45 <@S*> 可以用 /set autolog_path ~/.irssi/irclog/$tag.$0.%Y.%m
07:46 <@S*> 這樣每個頻道一個月一個 log 檔案
2012-04-29 更新:增加 freenode 設定:
在 freenode 可以註冊以認證並擁有專用的 nickname,步驟如下:
首先,先搶到想用的 nickname 後,向 NickServ 註冊:
/nick jeffhung /msg -freenode nickserv REGISTER <password> <email>
NickServ 會寄一封確認信給你,信裡面會含一個確認用的暗碼,照著信裡的說明,向 NickServ 發訊息以確認身分:
/msg -freenode nickserv VERIFY REGISTER <nickname> <verify-code>
為了不要讓註冊的 email 被公開,要啟用 hidemail:
/msg -freenode nickserv SET hidemail on
設定完畢之後,以後登入 IRC 便可以用下列指令與 NickServ 認證,以證明這個 nickname 真的屬於自己:
/msg -freenode nickserv IDENTIFY <password>
或者設定 IRSSI 在進入 freenode 時自動發送上面的指令:
/NETWORK ADD -kicks 4 -msgs 1 -modes 4 -whois 1 -autosendcmd "/msg nickserv identify <password> ;wait 2000" freenode
以上程序在 irssi 裡會開新視窗 (因為與 NickServ 互傳訊息),內容大致如下:
11:09 -!- Irssi: Starting query in freenode with nickserv
11:09 <jeffhung> register your.password your@email.address
11:09 -NickServ(NickServ@services.)- An email containing nickname activation instructions has been sent to your@email.address.
11:09 -NickServ(NickServ@services.)- If you do not complete registration within one day, your nickname will expire.
11:09 -NickServ(NickServ@services.)- jeffhung is now registered to your@email.address, with the password your.password.
11:09 -NickServ(NickServ@services.)-
11:09 -NickServ(NickServ@services.)- freenode is a service of Peer-Directed Projects Center, a
11:09 -NickServ(NickServ@services.)- not-for-profit organisation registered in England and Wales.
11:09 -NickServ(NickServ@services.)- For frequently-asked questions about the network, please see the
11:09 -NickServ(NickServ@services.)- FAQ page (http://freenode.net/faq.shtml). Should you wish to
11:09 -NickServ(NickServ@services.)- support the PDPC you can contribute to our current fundraiser at
11:09 -NickServ(NickServ@services.)- http://freenode.net/pdpc_donations.shtml.
11:10 <jeffhung> VERIFY REGISTER jeffhung verify.code
11:10 -NickServ(NickServ@services.)- jeffhung has now been verified.
11:10 -NickServ(NickServ@services.)- Thank you for verifying your e-mail address! You have taken steps in ensuring that your
registrations are not exploited.
11:14 <jeffhung> set hidemail on
11:14 -NickServ(NickServ@services.)- The HIDEMAIL flag is already set for account jeffhung.
11:17 <jeffhung> identify your.password
11:18 -NickServ(NickServ@services.)- You are already logged in as jeffhung.
最後,當然要記得叫 irssi 把以上設定存下來,下次再開的時候才會發生作用:
/SAVE



2 Comments
喔喔喔!! 這一篇實在太好了! 清楚明白!! 趕快收進書籤 XD
3 Backlinks
Software IRC by IRSSI, with Big5/UTF-8 recode — 輕鬆打造設定檔,以及設好轉碼
官方網站:http://www.mutt.org/ MuttFetchmailMsmtpGNUpg - DebianWiki Mutt 使用指南 MuttWiki irssi Irssi is a terminal based IRC client for UNIX systems. 官方網站:http://irssi.org/ 教學:IRC by IRSSI, with Big5/UTF-8 recode [JeffHung.Blog] txt2html txt2html is a Perl program that converts plain text to HTML. 官方網站:http://txt2html.sourceforge.net/ jed 快速、多功能、選單式的編輯器,相容於 Emacs 的鍵盤操作方式。
[...] IRC by IRSSI, with Big5/UTF-8 recode [JeffHung.Blog] [...]
Post a Comment