vim6
[376:KoRoN (2001/08/10(金) 23:56)]
>>375
今ひとつ意図が理解できていないのですがこうしたらどうなりますか?。
syntax match DoubleSpace " \+" containedin=ALL
[377:371 (2001/08/11(土) 00:13)]
>>376
\+ つけてもダメみたいです。
要は何がしたいのかというと、全角空白を Comment の中にあろうが
Constant の中にあろうが問答無用で hightlight 表示( 半角空白と区別 )したいということです。
でなんとか syntax.txt を読んで
syntax match DoubleSpace " " containedin=ALL
すればよさげだぞ、ということが分かったのですが、( なぜか keyword ではうまくいかず )
filetype=vim の時、行頭に hi やら s やらあるときに正しく highlight されなくて困っているというわけです。
例えば、
hi SpecialKey te rm=bold ctermfg=DarkBlue gui=bold guifg=#4400ff guibg=#f4f4f8 " FileType=vim
の3つの全角空白の内後ろ2つしか highlight されないでいる。
[378:名前いれてちょ。。。 (2001/08/11(土) 02:45)]
windowの画面分割で、Ctrl-W s だと上下に半分ずつにしかならない。
それだとソースコードを追っかけるときとかちょっとつらいから、
出きれば左右に分割できると嬉しいんだけど。
webで散々調べたけど、上手く hitせず。
スクリーンショットでは出来るみたいなんだけどなぁ。
[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(\)との絡みもあるかと調査中。
read.cgi ver5.26+ (01/10/21-)