在Vim中配置可变宽度选项卡间距

在Vim中配置可变宽度选项卡间距,vim,Vim,我有时希望Vim读取制表符格式的文件,其中最合理的格式表示制表符宽度不一致。换句话说,我希望在以下位置设置制表位: 5,30,50,60,70,80 如何在Vim中执行此操作?目前没有。没有任何正式版本 然而,如果你愿意在你这方面投入一点精力,我记得有一个类似的补丁。查看vim的补丁页面。如果您实际上不需要更改选项卡停止,只需插入正确数量的空格即可,我建议您编写脚本。下面是一个快速而肮脏的版本,它可能会满足您的需求: let s:tabstops = [0, 5, 30, 50, 60, 70,

我有时希望Vim读取制表符格式的文件,其中最合理的格式表示制表符宽度不一致。换句话说,我希望在以下位置设置制表位:

5,30,50,60,70,80


如何在Vim中执行此操作?

目前没有。没有任何正式版本


然而,如果你愿意在你这方面投入一点精力,我记得有一个类似的补丁。查看vim的补丁页面。

如果您实际上不需要更改选项卡停止,只需插入正确数量的空格即可,我建议您编写脚本。下面是一个快速而肮脏的版本,它可能会满足您的需求:

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 
s:tabstops=[0,5,30,50,60,70,80]
有趣!查找下一个(pos)
如果a:pos>min(s:tabstops)和&a:posget(s:tabstops,my_count)和&a:pos
这是一个很好的功能,虽然它不会重新格式化现有文件(这是我所需要的),但可以帮助我动态地格式化自己的文件。vim中有一个名为variable tabstops的功能,已经使用了很长时间。在过去的几天里,它刚刚重新整合到主分支中。我已经对它进行了一点测试——不得不对它进行修补以避免一些算术错误,但现在它看起来相当稳定。你可能很快就会走运的。