有时我希望Vim能够读取以制表符格式排版的文件,其中最合理的排版方式意味着制表符宽度不统一。换句话说,我想在以下位置设置制表位:
5、30、50、60、70、80
我该如何在Vim中实现这一点?
有时我希望Vim能够读取以制表符格式排版的文件,其中最合理的排版方式意味着制表符宽度不统一。换句话说,我想在以下位置设置制表位:
5、30、50、60、70、80
我该如何在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
目前还没有。没有任何官方版本支持。
不过,如果你愿意在自己的一面投入一点努力,我记得有一个补丁可以实现这样的功能。可以查看vim的补丁页面。