Last Change: Sun, 03 Aug 2003 16:03:58 +0900 (JST)
Hilight Multi(改)、2ちゃんねる及びその互換板、JBBS、まちBBS、したらば、 MegaBBS、2chTypeBBS(A round)、Ahhan!、いちごBBS、THEBBS、Zch、みちのく、一部あ めぞう系(三河版、九龍版のみ)、スラッシュドット(日・米)、Yahoo!(日・米)等 の閲覧に対応した、テキスト・エディタ Vim 用の掲示板ブラウザです。Chalice から 派生していますが現在は独自に開発を行っています。
ダウンロード:malice.zip (更新:2003-08-03)
test板:(BBSタイプを登録せずに自動認識できるでしょうか?)
ahhan |
12ch |
hilight(euc) |
around |
megabbs |
thebbs.cgi |
2ch compatible:
lv3
jbbs
当スクリプト群を利用するには、以下に列挙したソフトウェアを別途入手す る必要があります:
入手先については、"Google is your friend!" と言うに留めさせて頂きま す。
注 1:フル・インストール推奨。iconv, perl ライブラリと(動的あるいは静的
に)リンクされていることが必要。
Windows 用の実行ファイルがこちらにあります
(Perl 5.6 と動的リンクしてあります)。入手したものがiconv, perl とも有効になっ
ていなかった場合は差し替えてみてください:
gvim (6.2.056)
注 2:文字コード変換を行うライブラリです。vim と動的リンクされている
場合に別途必要になります。
Windows 等、Shift-JIS 環境においては、したらば等の euc 文字コード掲示板
の閲覧・書き込みに必用です。逆も同様。スクリプト自体が euc で書かれているの
で Shift-JIS 環境ではどっちみち必要
注 3:Windows 環境では Active Perl を推奨。Vim の perl インター フェースを利用するには Vim のビルド時に適切に perl とリンクされている必要が あります。
なお、Unix の標準的なテキスト・エディタ vi について全く知識のない方 は、事前に基本的な操作方法を勉強しておいてください。
Windows 環境を例に説明します。
malice.zip を解凍してできたディレクトリを適当な場所にコピーします。 e.g.:
C:\home\vimfiles\malice
Windows では通常設定されませんが、Unix 的な慣習に従い、ホームディレク トリというものを用意しておくことが望ましいです。ここではホームディレクトリを 示す環境変数 $HOME が C:\home に設定されていることを想定しています(環境変数 の設定方法が分からなければ、とりあえず流してください)。vimfiles は、Vim 関 連のファイルやディレクトリをインストールするための慣習的なディレクトリ名で す。これはホームディレクトリの直下に置きます。
さて、次に Vim を起動しましょう。次のようにタイプするとどうなるでしょ うか?(以下、コロンからはじまるコマンドをコロンコマンドと言います。表記は省 きますが、これは最後にリターン・キーを押すことで実行されます。)
:echo $HOME
環境変数 HOME を明示的に設定していない場合は、C:\ が表示されると思い ます(非 NT 系の場合)。もし設定するのが面倒で、なおかつ表示されたもので問題 がなければ、そのディレクトリをホームディレクトリとして利用してかまいません。 つまり、C:\vimfiles というディレクトリを作成し、そこに malice ディレクトリを コピーすれば O.K. です。
次に、コピーしたスクリプト群が有効になるための設定です。$HOME/_vimrc というファイルを開いてください(以下のようにタイプします):
:e $HOME/_vimrc
そのファイルに、次のような行を追加します(挿入モードに入るには i をタ イプ。ノーマルモードに復帰するには <Esc> をタイプします):
set rtp+=$HOME/vimfiles/malice
セーブするには:
:w
これで、きっと大丈夫。いったん Vim を終了してください:
:q
Vimを起動し、
:Malice
とタイプするとブラウザが起動します。下の画面は少々ヘビーな使用例です が、通常、起動時は4つのペインが表示されます。左上から板一覧、その下にスレの 閲覧履歴、右上にスレ一覧もしくはスレの栞、右下にスレ表示画面です。
注意:もし下の画面のような表示にならない、キーマップが利用で きない、といった不都合が生じる場合、Vim のファイルタイプ検知機能が有効になっ ていない可能性が考えられます。_vimrc に
filetype plugin on
という一行を付け足して、Vim を終了、再起動してみてください。
注意 2:正しく起動が行われない場合、2つの理由が考えられま
す。Vim のインストールが不完全等の理由で、キャッシュディレクトリが自動的に作
成されなかった。もう1つは perl インターフェースが有効になっていない場合で
す。
前者であれば、malice ディレクトリ下に cache というディレクトリを手動で
作成してください。後者の場合は、入手した vim 実行ファイルががリンクされてい
る perl のバージョンと、インストールしている perl のバージョンが同じかどうか
を確認してください。
注意 3:未テストですが、キャッシュディレクトリに半角スペース が含まれていた場合(ホームディレクトリが "C:\User Name\My Documents" になっ てる場合など)はファイルの保存等がうまくできないかもしれません。
各ペインの移動には次のキーが割り当てられています(<C-H>等は、コ ントロールキーを押しながらアルファベットキーを押すことを意味します。大文字で 表記していますがシフトキーは押さないでください):
m スレッド u スレ一覧(栞) <BS> 板一覧 <C-H> 履歴 <C-A> 閲覧履歴と書き込み履歴の表示トグル(履歴ウィンドウで) スレ一覧と栞の表示トグル(その他のウィンドウで)
上のキーのほか、これらも基本的に各ペインで共通して利用できるキーで す。説明はしませんが、vi の標準的なコマンドもだいたいそのまま使えます。
h,j,k,l カーソル移動(左、下、上、右) <Space> スクロール(前方) p スクロール(後方) <C-X> オンライン・オフラインモードのトグル q 終了 <C-L> 画面のリドロー、リサイズ <C-N> クリップボード内の URI をオープン
以下は、各ペインごとのキーマップです。
h,l 各板項目の折り畳み、展開 <CR> 板のオープン <C-W><CR> 板を新しいウィンドウでオープン <S-CR> 板を外部ブラウザでオープン D 板を削除
<CR> スレのオープン <C-CR> スレのオープン(1行目から表示) <C-W><CR> スレを新しいウィンドウでオープン <S-CR> スレを外部ブラウザでオープン ~ スレを栞に登録 R リロード s ソート d スレのdat削除 D 現在の板削除 i スレ立て I スレ立て(sage) a スレ立て(匿名) A スレ立て(匿名sgae)
<CR> スレのオープン <C-CR> スレのオープン(1行目から表示) <C-W><CR> スレを新しいウィンドウでオープン <S-CR> スレを外部ブラウザでオープン <Space> 更新チェック <S-Space> 更新チェック(連続) <C-W><Space> 更新チェック(連続+新ウィンドウで開く) 他、i, a など標準的な編集コマンドが利用できます。
<CR> URIのオープン <C-W><CR> URIを新しいウィンドウでオープン <S-CR> URIを外部ブラウザでオープン . or > 次のレスに移動 , or < 前のレスに移動 # 指定されたレス番にジャンプ & レスをHTML化して表示 ~ スレを栞に登録 r リロード(差分取得) R リロード(dat再取得) d レスの透明あぼーん D 現在のスレ削除 x レスのあぼーん <C-P><C-X> プレビュー機能のトグル <C-P><C-P> プレビュー窓のオープン <C-P><C-C> プレビュー窓のクローズ <C-O> ジャンプ履歴をさかのぼる <C-I> ジャンプ履歴を進む i 書き込み I 書き込み(sage) a 書き込み(匿名) A 書き込み(匿名sage) -i 引用付き書き込み -I 引用付き書き込み(sage) -a 引用付き書き込み(匿名) -A 引用付き書き込み(匿名sage)
<C-CR> 書き込み実行 :q 書き込みを止める
<CR> スレをオープン <C-W><CR> スレを新しいウィンドウでオープン <S-CR> スレを外部ブラウザでオープン D スレのdat削除 <C-P><C-X> プレビュー機能のトグル <C-P><C-P> プレビュー窓のオープン <C-P><C-C> プレビュー窓のクローズ
補足。
上記のほか、利用可能なキーマップを調べるには、次のようにタイプします:
:map <buffer>
vimrc に書いておくべきオプションをいくつか例示していきます。
* ハンドルの設定。デフォルトは「名無しさん@Vim」。匿名書き込み時の名 前も設定可能です(デフォルトは空文字)。
let malice_username = '' let malice_anonyname = '' let malice_usermail = '' " メール欄
* 起動時のオプション。可能な値は 'offline' 、'bookmark'(栞を開く)、 'resume'(前回終了時に開いていたスレを開く)。
let malice_startupflags = 'bookmark,resume'
* プレビューオプション。'1' はスレ表示の際に >>1 を表示、'above' はスレの上に表示、'autoclose' はカーソルがリンクから外れるとプレビューを閉じ る(非推奨)。
let malice_previewflags = '1,above'
* 履歴。'view' は閲覧履歴を取る、'write' は書き込み履歴を取る。両方と もデフォルトで有効になってます。'jump' は踏んだURLの履歴を取ります。
let malice_historyflags = 'view,jump'
* 閲覧履歴の保持数。デフォルトは 100。
let malice_historymax = 99999
* ステータス行の設定。好みの状態にするにはヘルプ(:help 'statusline' 等参照)と格闘しなければいけません。サンプル:
map <SID>xx <SID>xx let s:sid = substitute(maparg('<SID>xx'), 'xx$', '', '') unmap <SID>xx function! s:SetStatus_2ch() return exists('b:host') ? b:host.(exists('b:board') ? b:board.(exists('b:datutil_datsize') ? \ ' '.(b:datutil_datsize/1024).'KB' : '') : exists('b:bbs') ? '/'.b:bbs : '').' ' : '' endfunction let malice_statusline = '%{' . s:sid . 'SetStatus_2ch()}'
perl が有効になっている環境で必要になることがあります。Windows 環境に おいては、したらば等の板、スレを表示するために必要になります。配布に含まれる ものを、$VIMRUNTIME/tools/ というディレクトリに入れておいてください。
スクリプトのベースディレクトリ($HOME/vimfiles/malice)に 'ngword.txt' というファイルを用意してください。そこに 1 行ずつ自動あぼーん(削除)したい文字 列を書いておきましょう。行頭の '#' はコメントと見なされます。空行を置くこともで きます。
2ちゃん:倉庫入りしたものは取得できます。●には未対応です。(read/ディレクトリに残ってれば以下自粛)
飼育:概ね問題ないかと。
桃@飼育:対応してるかな
JBBS@したらば:対応しています。
狩:対応しています。
板表示の際、自動で移転先を探して表示しますが、板一覧の方はユーザー側 で更新してください。スレ表示の場合は、移転先が見つかればそのサーバー名で dat がリネームされます。移転前のログが残ることはありません。
ベースディレクトリに 'other.brd' というファイルを作成し、下のように記 述します。
■カテゴリ名 [space]板名[tab][tab][tab][tab]URI
タブの数はいくつでもかまいません。カテゴリはインデントの深さによって 階層化することができます。
閲覧履歴機能が有効になっている場合に利用できます。以前に表示したこと のあるスレを開く時、最後に表示したレスから表示します。ただし、栞での更新 チェックの場合のみ更新分からの表示になります。
GUI ブラウザにおけるポップアップ機能に相当します。>>1 といった レス番参照や、スレ内の URI 上にカーソルがある時、その内容をプレビュー窓とい う特殊な窓に(自動的に)表示します。この窓に移動(<C-W>P)して、次々と リンクを辿っていくこともできます。
板やスレを開く時に、未知のホストであれば自動的にスクリプトのタイプを 判別するようになっています。が、あらかじめ登録しておけば判別の手間が省け、判 別エラーも防げます。登録を行うには、以下のように、ベースディレクトリの 'regist.brd' というファイルに板のホストを書いておきます。行頭の ; はコメント と見なされます。空行を置くこともできます。設定は Malice 再起動後か、 :MaliceUpdateBBS 実行後、有効になります。
[bbstype] www.hoge.com
bbstype として指定できるのは、2ch, 2chtype, megabbs, ahhan, 12ch, 12ch_kachu, 12ch_cgi, hilight, around, nopathinfo, code_euc です。 skeleton.
2ch と 2chtype の違いは微妙なのですが、基本的には 2ch 互換の板は 2chtype として登録してください。2ch 互換スクリプトで PathInfo 仕様に対応し ていないものは、nopathinfo も併せて登録してください。
12ch(みちのく)が 3 つあります。スレ一覧、スレのデータが直取りできる もの(12ch)、2ch 互換モードで運用されているもの(12ch_kachu)、cgi 読みしか できないもの(12ch_cgi)です。わからなければ 12ch としてください。
注意:
ホスト名のみ記述してください。例えばこのような板があります。
http://www.kokobbs.com/ahhan/cgi-bin/bbs/sup/index.html
このとき、www から /bbs までがホストで、それより後はホスト下の各板名と
なります。
HTML 用のパスと CGI 用のパスが異なる場合、'regist.brd' に次のように記 述します:
[megabbs] www.fuga.com[tab]www.fuga.com/cgi-bin
cgi の拡張子が cgi 以外の場合、read.cgi または bbs.cgi に相当するファ イル名までを記述しておくことで登録することができます。例:
[2chtype] www.hoge.com[tab]www.hoge.com/test/read.php
もともと飼育専用ブラウザだったので、かなりそれに特化した機能を備えて います。ここでは書き込みについての注意点を書いておきます。sageたり落としたり するには "Sage:" の欄を使ってください。有効なのは "sage" "ochi" "age" の各文 字列です(引用符は含まない)。Sage 欄の内容はそのまま投稿されます。妥当性 チェックはしませんので注意してください。
これも書き込みについての注意です。この掲示板にはメール欄が(今のとこ ろ)無い代わりに、2ch で言うトリップのパスを入れる箇所があります。Malice で はメール欄をこれに代用します。
HTTP 簡易認証に対応しています(perl モードのみ)。会員制サイトなど で、.htaccess により閲覧制限がかけられている場合、最初にアカウント名とパス ワードの入力を求めます。それ以後のアクセスは通常と同様に行うことができます。
ローカルに保存された dat ファイルに対して grep のような仕方で検索をか けることができます。スレバッファにて s キーを押すと検索したい文字列、検索す る対象を入力するよう求めます。いずれも複数指定するにはスペースを空けてくださ い。キーワードを複数指定した場合は AND 検索となります。
dat の整形表示を自由にカスタマイズすることができます。サンプルはこち ら: C風 | whitespaced | 2ch風
使用法:malice ディレクトリ下に skins ディレクトリを作り、そこで解凍し ます。そして、_vimrc に次の行を追加します。
set rtp+=$HOME/vimfiles/malice/skins/c
次のようなスクリプトを適当なファイルに書いてください(例: mimizun.vim)。$HOME/vimfiles/plugin/ ディレクトリに置いておけば自動的に読み 込まれます。
function! s:SearchMimizun(word) if !exists('b:board') return endif let word = a:word if !strlen(word) let word = input('type search keywords: ') if !strlen(word) return endif endif let word = AL_urlencode(word) let url = 'mimizun.mine.nu/cgi/namazu.cgi.exe?whence=0&query='.word let url = url.'&max=100&result=normal&sort=date%3Alate' let url = url.'&idxname='.substitute(b:board, '^/', '', '') call AL_open_url('http://'.url, exists('g:malice_exbrowser') ? g:malice_exbrowser : '') endfunction command! -nargs=* Mimizun :call s:SearchMimizun()
2ch のスレまたは板を見ている時に :Mimizun keyword と入力すれば、その板 内での検索が実行できます。
103 :名無しさん@Vim :2003/07/08 (Tue) 15:39:05 ID:??? [sage] Done>101 とりあえずこんな感じで $cd ~/.vim/after/ftplugin $cat malice_thread.vim if exists('b:board') if b:board ==# '/morningcoffee' let b:anonyname = '名無し募集中。。。' endif endif " EOF vim:ts=8:sts=2:sw=2:noet:fdm=indent: 名前関連のユーザ定義変数は b:username (コテハン) b:usermail (コテメール) b:anonyname (名無し) となっております。
こういうのを ~/vimfiles/after/ftplugin/malice_thread.vim (上と同じファイ ル)に書いて:
nnoremap <silent> <buffer> <C-Tab> :call <SID>NextLink('next')<CR> nnoremap <silent> <buffer> <S-Tab> :call <SID>NextLink('prev')<CR> function! s:NextLink(flag) call search('\%(h\?ttps\?://\|\%(http://\)\@<!www\|\%(\%(>>\?\|>>\?\)\(\d\+\|[0-9]\+\)\)\)', \ (a:flag ==# 'prev' ? 'b' : '').'W') endfunction
<C-Tab> を押すと前方、<S-Tab> で後方のレス・リンクにジャンプします。 (<Tab> が使えないのは、タブ文字が Vim の履歴ジャンプ機能に使われているためです)
Vim にて
:new :cd ~/vimfiles/malice/cache :put =glob('kako*') :1d_ :g/\.gz$/d_ :call system('gzip -9 '.getline('.'))
とします。ちなみに 2ch の過去ログは圧縮がかかっているものはそのまま保存 しています。