vim6
[379:emacsのちvim (2001/08/11(土) 03:14)]
>>378
vim6使ってC-w v。
なぜ、まず:helpしないのかが理解できん。
[380:emacsのちvim (2001/08/11(土) 05:10)]
>>371
同様の現象が、6.0apjで確認できました。
teにつづく全角スペースまでが、teで始まるキーワード(hiの引数)
の一部として、DoubleSpaceより優先してマッチングしている感じです。
試しに、行頭に"を挿入してコメントとしたところ、3つ分のDoubleSpaceが
highlightされます。
ちなみに、hi、highlightのいずれでも上記症状に変化は見られませんでした。
もう少しvim.vimあたりを見てみます。
[381:KoRoN (2001/08/11(土) 06:48)]
>>378
highlightは詳しくないのでなんともいえませんが、随分昔にMLに流れた次のようなスクリプトが役に立つでしょう。
適当な名前で保存して:soしてみて下さい。
function! s:HiDiHi()
let l = line(".")
let c = col(".")
let id = synID(l, c, 1)
let attr_hi = synIDattr((id), "name")
let attr_trans = synIDattr(synID(l, c, 0), "name")
let attr_lo = synIDattr(synIDtrans(id), "name")
echo "hi<" . attr_hi . '> trans<' . attr_trans . "> lo<" . attr_lo . ">"
endfunction
nnoremap <silent> <F6> :call <SID>HiDiHi()<CR>
[382:KoRoN (2001/08/11(土) 07:30)]
>>378,>>380-381
:set isident=@,48-57,_
と設定してみてください。正しい対処法かはまったくわかりません。
'isident'がデフォルトの"@,48-57,_,128-167,224-235"だと、
vimHiGroupが"\i\+"に設定されていて全角空白の1バイト目0x81(==129)が\iにマッチします。
2バイト目は0x40(==64=='@')であるので\iにはマッチしません。
つまりsyntax解釈上、全角空白が分断されてしまったため起こった現象でしょう。
'isident'にMBが含まれる必要はないと思いますけど、なんかスッキリしてない状態であることは認めます。
[383:KoRoN (2001/08/11(土) 07:31)]
# ううう。さげ癖がついている
age
[384:371 (2001/08/11(土) 11:10)]
>>382
isident,iskeyword を "@,48-57,_" にしたら、hi のあとでも正しく highlight されるようになりましたが、
s のあとや、let の後ろでは以前として表示が思ったようにされません。
( let については2つ目以降どころかまったく highlight されず )
やっぱり素直に、/ して、:set hls の方がよいですかね?
[385:KoRoN (2001/08/11(土) 12:56)]
>>384
letは\kの問題です。全角文字は無条件でiskeyword(/\k)に引っかかるという
素晴らしい仕様のおかげですね。これについては修正パッチ作りました。
sは現在調査中で、[^a-z...]が全角にマッチしてしまうことが原因らしいけど…
ハッキリとはわかっていません。\z(\)との絡みもあるかと調査中。
[386:KoRoN (2001/08/11(土) 14:14)]
>>385
sについてわかりましたので補足。syn regionの指定にrs=s+1が付いてます。
これは検索の//{offset}と同じ意味ですが、syntaxのほうはMB非対応になっていました。
こいつが結構、修正に一苦労するかもしれません。
[387:名前いれてちょ。。。 (2001/08/11(土) 15:01)]
>>379
thanx!
もちろん :help したYO!
けど、いまいンストールされてるのが vim5.x だったと思った。
ひょっとしたら vim6 からじゃないとダメ?
まぁいいや。夏休みが終わったら確かめてみよう。
[388:KoRoN (2001/08/11(土) 17:20)]
>>387
横分割はvim6の機能です。っていうかココ、vim6のスレだし…
read.cgi ver5.26+ (01/10/21-)