minibannernet
Web:

Last Change: Sun, 03 Aug 2003 16:03:58 +0900 (JST)

Malice

Hilight Multi(改)、2ちゃんねる及びその互換板、JBBS、まちBBS、したらば、 MegaBBS、2chTypeBBS(A round)、Ahhan!、いちごBBS、THEBBS、Zch、みちのく、一部あ めぞう系(三河版、九龍版のみ)、スラッシュドット(日・米)、Yahoo!(日・米)等 の閲覧に対応した、テキスト・エディタ Vim 用の掲示板ブラウザです。Chalice から 派生していますが現在は独自に開発を行っています。

ダウンロード:malice.zip (更新:2003-08-03)

Bugs

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()}'

各種機能

jcode.plについて

perl が有効になっている環境で必要になることがあります。Windows 環境に おいては、したらば等の板、スレを表示するために必要になります。配布に含まれる ものを、$VIMRUNTIME/tools/ というディレクトリに入れておいてください。

NG ワードについて

スクリプトのベースディレクトリ($HOME/vimfiles/malice)に 'ngword.txt' というファイルを用意してください。そこに 1 行ずつ自動あぼーん(削除)したい文字 列を書いておきましょう。行頭の '#' はコメントと見なされます。空行を置くこともで きます。

過去ログについて

2ちゃん:倉庫入りしたものは取得できます。●には未対応です。(read/ディレクトリに残ってれば以下自粛)
飼育:概ね問題ないかと。
桃@飼育:対応してるかな
JBBS@したらば:対応しています。
狩:対応しています。

板の移転について (2ch)

板表示の際、自動で移転先を探して表示しますが、板一覧の方はユーザー側 で更新してください。スレ表示の場合は、移転先が見つかればそのサーバー名で dat がリネームされます。移転前のログが残ることはありません。

マイフォルダ(お気に入り板)について

ベースディレクトリに 'other.brd' というファイルを作成し、下のように記 述します。

■カテゴリ名
[space]板名[tab][tab][tab][tab]URI

タブの数はいくつでもかまいません。カテゴリはインデントの深さによって 階層化することができます。

「ここまで読んだ」機能

閲覧履歴機能が有効になっている場合に利用できます。以前に表示したこと のあるスレを開く時、最後に表示したレスから表示します。ただし、栞での更新 チェックの場合のみ更新分からの表示になります。

プレビュー機能

GUI ブラウザにおけるポップアップ機能に相当します。>>1 といった レス番参照や、スレ内の URI 上にカーソルがある時、その内容をプレビュー窓とい う特殊な窓に(自動的に)表示します。この窓に移動(<C-W>P)して、次々と リンクを辿っていくこともできます。

各種掲示板について

BBS タイプの登録

板やスレを開く時に、未知のホストであれば自動的にスクリプトのタイプを 判別するようになっています。が、あらかじめ登録しておけば判別の手間が省け、判 別エラーも防げます。登録を行うには、以下のように、ベースディレクトリの '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 欄の内容はそのまま投稿されます。妥当性 チェックはしませんので注意してください。

THE BBSについて

これも書き込みについての注意です。この掲示板にはメール欄が(今のとこ ろ)無い代わりに、2ch で言うトリップのパスを入れる箇所があります。Malice で はメール欄をこれに代用します。

HTTP Basic Authentication

HTTP 簡易認証に対応しています(perl モードのみ)。会員制サイトなど で、.htaccess により閲覧制限がかけられている場合、最初にアカウント名とパス ワードの入力を求めます。それ以後のアクセスは通常と同様に行うことができます。

dat 検索の仕方

ローカルに保存された dat ファイルに対して grep のような仕方で検索をか けることができます。スレバッファにて s キーを押すと検索したい文字列、検索す る対象を入力するよう求めます。いずれも複数指定するにはスペースを空けてくださ い。キーワードを複数指定した場合は AND 検索となります。

スキンについて

c style
2ch style

dat の整形表示を自由にカスタマイズすることができます。サンプルはこち ら: C風 | whitespaced | 2ch風

使用法:malice ディレクトリ下に skins ディレクトリを作り、そこで解凍し ます。そして、_vimrc に次の行を追加します。

set rtp+=$HOME/vimfiles/malice/skins/c

Tips

みみずん検索を使う

次のようなスクリプトを適当なファイルに書いてください(例: 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 の履歴ジャンプ機能に使われているためです)

過去ログをgzip圧縮するには

Vim にて

:new
:cd ~/vimfiles/malice/cache
:put =glob('kako*')
:1d_
:g/\.gz$/d_
:call system('gzip -9 '.getline('.'))

とします。ちなみに 2ch の過去ログは圧縮がかかっているものはそのまま保存 しています。


Not legal notice