■掲示板に戻る■ 1- 最新10

vim6

[375:371 (2001/08/10(金) 23:43)]
>>374
ありがとう。が、もうひとつ問題が…

syntax match DoubleSpace " " containedin=ALL
がなぜか
hi SpecialKey term=bold ctermfg=DarkBlue gui=bold guifg=#4400ff guibg=#f4f4f8 " FileType=vim
という行で全角空白が2個並んでいるとき2個目以降しか highlight 表示されない。
FileType が vim じゃないときや、行頭の hi を変更すると正しく highlight されるのだが…


[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 の方がよいですかね?


次10 前10 最新10
NAME:MAIL:

read.cgi ver5.26+ (01/10/21-)