【发布时间】:2016-02-13 02:02:44
【问题描述】:
我使用不使用链接中断的 FITS 文件。 这是一个此类文件的 sn-p:
SIMPLE = T / file does conform to FITS standard BITPIX = 8 / number of bits per data pixel NAXIS = 0 / number of data axes EXTEND = T / FITS dataset may contain extensions COMMENT FITS (Flexible Image Transport System) format is defined in 'AstronomyCOMMENT and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H TELESCOP= 'TELESCOP' / Telescope (mission) name INSTRUME= 'INST ' / Instrument name OBS_ID = '00000000000' / Observation ID TARG_ID = 00000 / Target ID SEG_NUM = 0 / Segment number TIMESYS = 'TT ' / time measured from
当我查看这些文件时,我使用set numberwidth=6 和set columns=86
SIMPLE = T / file does conform to FITS standard
BITPIX = 8 / number of bits per data pixel
NAXIS = 0 / number of data axes
EXTEND = T / FITS dataset may contain extensions
COMMENT FITS (Flexible Image Transport System) format is defined in 'Astronomy
COMMENT and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H
TELESCOP= 'TELESCOP' / Telescope (mission) name
INSTRUME= 'INST ' / Instrument name
OBS_ID = '00000000000' / Observation ID
TARG_ID = 00000 / Target ID
SEG_NUM = 0 / Segment number
TIMESYS = 'TT ' / time measured from
问题是syntax match myComment " / .*$" 显然不尊重set columns,它会在第一条评论之后突出显示所有内容。我想让它知道第一条评论只能延伸到第 80 列,第二条评论在第 160 列结束,依此类推。
编辑:
我已经创建了一个 vim 语法文件:
if exists("b:current_syntax")
finish
endif
syn match fitsComment1 " / .*\%80c"
hi link fitsComment1 Comment
syn match fitsComment2 "COMMENT.*\%400c"
hi link fitsComment2 Comment
syn match fitsComment2 "COMMENT.*\%480c"
hi link fitsComment2 Comment
let c1 = 80
let c2 = 160
let c = 1
while c <= 8
let regex = '" \%>' . c1 . 'c/ .*\%' . c2 . 'c"'
execute 'syn match fitsComment2 '.regex
hi link fitsComment2 Comment
let c1 += 80
let c2 += 80
let c += 1
endwhile
let b:current_syntax = "fits"
此文件会产生所需的突出显示,但有一些注意事项:
“多行” cmets 以 COMMENT 开头。
我加了
syn match fitsComment2 "COMMENT.*\%400c"
hi link fitsComment2 Comment
syn match fitsComment2 "COMMENT.*\%480c"
hi link fitsComment2 Comment
在我的示例中明确处理它们,但这不是真正的解决方法,因为我并不总是知道这些多行 cmets 将在哪里发生。
有没有办法在没有while 循环的情况下做到这一点?循环使读取文件非常慢(这些文件可能相当长)。
【问题讨论】: