Redéfinir l’onglet en 4 espaces

Mon paramètre actuel suppose 8 espaces; comment pourrais-je le redéfinir?

Cela dépend de ce que vous voulez dire. Voulez-vous que les caractères de tabulation réels apparaissent dans un espace de 4 espaces ou par “tabulation” signifie-t-il un retrait , généré en appuyant sur la touche de tabulation, ce qui entraînerait littéralement (jusqu’à) 4 caractères d’espace pour chaque “onglet” que vous tapez?

Selon votre réponse, l’un des ensembles de parameters suivants devrait vous convenir:

  • Pour les caractères de tabulation qui apparaissent à 4 espaces :

    set tabstop=4 

    Si vous utilisez un caractère de tabulation réel dans votre code source, vous souhaiterez probablement aussi utiliser ces parameters (ce sont en fait les valeurs par défaut, mais vous voudrez peut-être les définir de manière défensive):

     set softtabstop=0 noexpandtab 

    Enfin, si vous souhaitez qu’un retrait corresponde à un seul onglet, vous devez également utiliser:

     set shiftwidth=4 
  • Pour les retraits composés de 4 caractères d’espacement mais entrés avec la touche de tabulation:

     set tabstop=8 softtabstop=0 expandtab shiftwidth=4 smarttab 

Pour rendre les parameters ci-dessus permanents, ajoutez ces lignes à votre vimrc .

Si vous avez besoin de faire des ajustements, ou si vous souhaitez simplement comprendre ce que signifient toutes ces options, voici une ventilation de chaque option:

tabstop

La largeur d’un tabstop dur mesurée en “espaces” – la largeur (maximale) d’un caractère de tabulation réel.

shiftwidth

La taille d’un “indent”. Il est également mesuré dans des espaces, donc si votre base de code est indentée avec des caractères de tabulation, alors vous voulez que shiftwidth égal au nombre de fois que vous avez shiftwidth tabstop . Ceci est également utilisé par des choses comme les commandes = , > et < .

softtabstop

Si vous définissez cette valeur sur une valeur autre que zéro, la touche de tabulation (en mode insertion) insérera une combinaison d'espaces (et éventuellement de tabulations) pour simuler les tabulations à cette largeur.

expandtab

Si vous activez cette option, la touche de tabulation (en mode insertion) insérera des espaces au lieu de caractères de tabulation. Cela affecte également le comportement de la commande retab .

smarttab

Si vous activez cette option, la touche de tabulation (en mode insertion) insérera des espaces ou des tabulations pour passer au prochain retrait du prochain tabulateur lorsque le curseur se trouve au début d'une ligne (les seuls caractères précédents sont des espaces).

Pour plus de détails, consultez :help ' optionname ' in vim (ex :help 'tabstop' )

Pour définir cela de manière permanente pour l’utilisateur actuel, créez (ou éditez) le fichier .vimrc :

 $ vim ~/.vimrc 

Ensuite, collez la configuration ci-dessous dans le fichier. Une fois redémarré, les parameters de l’onglet s’appliqueront.

 set tabstop=4 " The width of a TAB is set to 4. " Still it is a \t. It is just that " Vim will interpret it to be having " a width of 4. set shiftwidth=4 " Indents will have a width of 4 set softtabstop=4 " Sets the number of columns for a TAB set expandtab " Expand TABs to spaces 

ou sténographie pour vim modeline:

 vim :set ts=4 sw=4 sts=4 et : 

Je l’ai copié et collé dans mon fichier .vimrc:

 " size of a hard tabstop set tabstop=4 " always uses spaces instead of tab characters set expandtab " size of an "indent" set shiftwidth=4 

Les 2 premiers parameters signifient que lorsque j’appuie sur la touche Tab, j’obtiens 4 espaces. Le troisième paramètre signifie que lorsque je fais V> (c.-à-d. Visuel et indenté), j’obtiens aussi 4 espaces.

Pas aussi complet que la réponse acceptée, mais cela pourrait aider les gens qui veulent juste quelque chose à copier et à coller.

Mettez vos parameters souhaités dans le fichier ~ / .vimrc – Voir ci-dessous des instructions et des bonnes pratiques.

Il existe quatre méthodes principales pour utiliser les tabs dans Vim:

  1. Toujours garder ‘tabstop’ à 8, définir ‘softtabstop’ et ‘shiftwidth’ à 4 (ou 3 ou tout ce que vous préférez) et utiliser ‘noexpandtab’. Ensuite, Vim utilisera un mélange d’tabs et d’espaces, mais en tapant et se comportera comme un onglet apparaît tous les 4 (ou 3) caractères.

    Remarque: si vous définissez «tabstop» sur une autre valeur que 8, votre fichier risque de ne pas apparaître correctement (par exemple lors de l’impression).

  2. Définissez “tabstop” et “shiftwidth” à ce que vous préférez et utilisez “expandtab”. De cette façon, vous insérerez toujours des espaces. Le formatage ne sera jamais gâché lorsque «tabstop» est modifié.

  3. Réglez ‘tabstop’ et ‘shiftwidth’ à ce que vous préférez et utilisez | modeline | pour définir ces valeurs lors de la modification du fichier à nouveau. Ne fonctionne que lorsque vous utilisez Vim pour modifier le fichier.

  4. Toujours définir ‘tabstop’ et ‘shiftwidth’ à la même valeur et ‘noexpandtab’. Cela devrait alors fonctionner (pour les indentations initiales uniquement) pour tout paramètre de tabulation utilisé par les utilisateurs. Si vous faites cela, il peut être intéressant d’avoir des tabs après le premier élément inséré en blanc. Sinon, les commentaires alignés seront erronés lorsque “tabstop” est modifié.

La source:

  • vimdoc.sourceforge.net/htmldoc/options.html#’tabstop ‘
  • :help tabstop

Encore une chose, utilisez
:retab
convertir l’ tab existant en spaces http://vim.wikia.com/wiki/Converting_tabs_to_spaces

Ajouter une ligne
set ts=4
dans
fichier ~/.vimrc par utilisateur
ou
/etc/vimrc pour l’ensemble du système

Il y a peu de parameters qui définissent s’il faut utiliser des espaces ou des tabulations.

Voici donc des fonctions pratiques qui peuvent être définies dans votre fichier ~/.vimrc :

 function! UseTabs() set tabstop=4 " Size of a hard tabstop (ts). set shiftwidth=4 " Size of an indentation (sw). set noexpandtab " Always uses tabs instead of space characters (noet). set autoindent " Copy indent from current line when starting a new line (ai). endfunction function! UseSpaces() set tabstop=2 " Size of a hard tabstop (ts). set shiftwidth=2 " Size of an indentation (sw). set expandtab " Always uses spaces instead of tab characters (et). set softtabstop=0 " Number of spaces a  counts for. When 0, featuer is off (sts). set autoindent " Copy indent from current line when starting a new line. set smarttab " Inserts blanks on a  key (as per sw, ts and sts). endfunction 

Usage:

 :call UseTabs() :call UseSpaces() 

Pour l’utiliser par extension de fichier, la syntaxe suivante peut être utilisée (ajoutée à .vimrc ):

 au! BufWrite,FileWritePre *.module,*.install call UseSpaces() 

Voir aussi: Conversion d’tabs en espaces .


Voici un autre extrait de Wikia qui peut être utilisé pour basculer entre les tabs et les espaces :

 " virtual tabstops using spaces set shiftwidth=4 set softtabstop=4 expandtab " allow toggling between local and default mode function TabToggle() if &expandtab set shiftwidth=8 set softtabstop=0 set noexpandtab else set shiftwidth=4 set softtabstop=4 set expandtab endif endfunction nmap  mz:execute TabToggle()'z 

Il permet d’utiliser 4 espaces pour chaque onglet et un mappage sur F9 pour basculer les parameters.

 :set sw=4 

Voir Maîsortingser l’éditeur de VI