7 votes

Configuration de l'espacement des tabulations à largeur variable dans Vim

Je veux parfois que Vim lise des fichiers formatés par tabulation lorsque le formatage le plus raisonnable implique une largeur de tabulation non uniforme. En d'autres termes, je veux un arrêt de tabulation à certaines positions :

5, 30, 50, 60, 70, 80

Comment puis-je faire cela dans Vim ?

4voto

Whaledawg Points 2018

Si vous n'avez pas réellement besoin de modifier les tabstops et que vous pouvez vous en sortir en insérant simplement le nombre correct d'espaces, je vous suggère de script. Voici une version rapide et sale qui pourrait faire ce que vous voulez :

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

1voto

ldigas Points 19740

Actuellement non. Pas avec les versions officielles.

Cependant, si vous êtes prêt à investir un peu d'effort de votre côté, je me souviens qu'il y avait un patch pour quelque chose comme ça. Consultez la page des correctifs de vim.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X