在Vim中配置可变宽度制表符间距

时间:2009-09-07 16:07:09

标签: vim

我有时希望Vim读取制表符格式的文件,其中最合理的格式化意味着制表符宽度不均匀。换句话说,我想在一个位置停止制表:

5,30,50,60,70,80

我怎么能在Vim中做到这一点?

2 个答案:

答案 0 :(得分:4)

如果您实际上不需要更改tabstops并且只需插入正确数量的空格即可离开,我建议您编写脚本。这是一个快速而又脏的版本,可能会做你想要的:

let s:tabstops = [0, 5, 30, 50, 60, 70, 80]
fun! Find_next(pos)
  if a:pos > min(s:tabstops) && a:pos < max(s:tabstops) 
    let my_count = 0
    while my_count < len(s:tabstops) - 1
      if a:pos > get(s:tabstops, my_count) && a:pos < get(s:tabstops, my_count+1)
        return get(s:tabstops, my_count+1)
      endif
      let my_count = my_count + 1
    endwhile
    return -1
  endif
  return -1
endfun
fun! Tabbing()
  let pos = col('.')
  let next_stop = Find_next(pos)
  let the_command = "normal i"
  let my_count = 0
  while my_count < next_stop - pos
    let the_command = the_command . " "
    let my_count = my_count + 1
  endwhile
  let the_command = the_command . ""
  execute the_command
endfun
imap <TAB> j<ESC>:call Tabbing()<CR>lxi 

答案 1 :(得分:1)

目前没有。没有任何官方版本。

但是,如果你愿意为自己付出一点努力,我记得那里有类似的补丁。查看vim的补丁页面。