यदि आपको वास्तव में टैबस्टॉप बदलने की ज़रूरत नहीं है और केवल रिक्त स्थान की सही संख्या डालने से दूर हो सकता है, तो मैं सुझाव दूंगा कि आप इसे स्क्रिप्ट करेंगे। यहां एक त्वरित और गंदे संस्करण है जो आप चाहते हैं:
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
परिवर्तनीय टैबस्टॉप नामक एक सुविधा है जिसे विम में लंबे समय तक लात मार दिया गया है। यह पिछले कुछ दिनों में मास्टर शाखा में बस फिर से बदल गया था। मैंने इसे थोड़ा सा परीक्षण किया है - कुछ अंकगणितीय त्रुटियों से बचने के लिए इसे पैच करना था, लेकिन अब यह बहुत स्थिर दिखाई देता है। आप बहुत जल्द भाग्य में हो सकता है। – Cascabel