web-dev-qa-db-fra.com

Redéfinir l'onglet comme 4 espaces

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

1008
Ricky

Cela dépend de ce que tu veux dire. Souhaitez-vous que les caractères de tabulation de votre fichier apparaissent sur une largeur de 4 espaces, ou par "tab", entendez-vous réellement un retrait ? , générés en appuyant sur la touche de tabulation, ce qui aurait pour résultat que le fichier contient littéralement (jusqu'à) 4 caractères d'espace pour chaque "tab" que vous tapez?

En fonction de votre réponse, l'un des ensembles de paramètres suivants devrait fonctionner pour vous:

  • Pour les caractères de tabulation apparaissant sur 4 espaces :

    set tabstop=4
    

    Si vous utilisez le caractère de tabulation dans votre code source, vous voudrez probablement aussi ces paramètres (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 espaces mais entrés avec la touche de tabulation:

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

Pour rendre les paramètres ci-dessus permanents, ajoutez ces lignes à votre vimrc .

Au cas où vous auriez besoin de faire des ajustements ou si vous souhaitez simplement comprendre le sens de ces options, voici une ventilation de ce que chaque option signifie:

tabstop

La largeur d'une tabulation dure mesurée en "espaces" - effectivement la largeur (maximale) d'un caractère de tabulation réel.

shiftwidth

La taille d'un "retrait". Elle est également mesurée en espaces. Par conséquent, si votre base de code met en retrait des caractères de tabulation, vous souhaitez que shiftwidth soit égal au nombre de caractères de tabulation fois tabstop. Ceci est également utilisé par des choses telles que les commandes =, > et <.

softtabstop

Si vous définissez cette option sur une valeur autre que tabstop, la touche de tabulation (en mode insertion) insérera une combinaison d'espaces (et éventuellement de tabulations) dans simule . s'arrête à cette largeur.

expandtab

Activer ceci fera que la touche de tabulation (en mode insertion) insère des espaces à la place des caractères de tabulation. Ceci 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 aller au prochain retrait de la prochaine tabulation lorsque le curseur se trouve au début d'une ligne (c'est-à-dire que les seuls caractères précédents sont des espaces).

Pour plus de détails sur l’un d’eux, voir :help 'optionname' dans vim (par exemple :help 'tabstop').

1492
Laurence Gonsalves

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

$ vim ~/.vimrc

Ensuite, collez la configuration ci-dessous dans le fichier. Une fois que vim est redémarré, les paramètres de l'onglet seront appliqués.

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
714
Alan Haggai Alavi

ou sténographie pour vim modeline:

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

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 réglages signifient que lorsque j'appuie sur la touche de tabulation, j'obtiens 4 espaces. Le troisième paramètre signifie que lorsque je fais V> (c’est-à-dire visuel et indent), je reçois également 4 espaces.

Pas aussi complet que la réponse acceptée, mais cela pourrait aider les personnes qui souhaitent simplement copier et coller quelque chose.

24
Snowcrash

Il y a peu de paramètres qui définissent l'utilisation d'espaces ou de tabulations.

Voici donc des fonctions pratiques que vous pouvez définir 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 <Tab> 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 <Tab> key (as per sw, ts and sts).
endfunction

Usage:

:call UseTabs()
:call UseSpaces()

Pour l'utiliser par extension de fichier, vous pouvez utiliser la syntaxe suivante (ajoutée à .vimrc):

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

Voir aussi: Conversion d'onglets en espaces .


Voici un autre extrait de Wikia qui peut être utilisé pour basculer entre les tabulations 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 <F9> mz:execute TabToggle()<CR>'z

Il permet d’utiliser 4 espaces pour chaque onglet et un mappage à F9 pour basculer les paramètres.

18
kenorb

Placez les paramètres de votre choix dans le fichier ~/.vimrc - Voir ci-dessous quelques directives et meilleures pratiques.

Il y a quatre façons principales d'utiliser les onglets dans Vim:

  1. Conservez toujours "tabstop" à 8, réglez "softtabstop" et "shiftwidth" sur 4 (ou 3 ou ce que vous préférez) et utilisez "noexpandtab". Ensuite, Vim utilisera un mélange d'onglets et d'espaces, mais taper et se comportera comme si un onglet apparaissait tous les 4 (ou 3) caractères.

    Remarque: Définir l'option 'tabstop' sur une valeur autre que 8 peut donner à votre fichier une apparence incorrecte à de nombreux endroits (par exemple, lors de son impression).

  2. Définissez 'tabstop' et 'shiftwidth' sur ce que vous préférez et utilisez 'expandtab'. De cette façon, vous insérerez toujours des espaces. La mise en forme ne sera jamais déréglée lorsque "tabstop" est modifié.

  3. Définissez 'tabstop' et 'shiftwidth' sur ce que vous préférez et utilisez un | modeline | pour définir ces valeurs lors de la modification du fichier. Ne fonctionne que lorsque vous utilisez Vim pour éditer le fichier.

  4. Réglez toujours 'tabstop' et 'shiftwidth' sur la même valeur et sur noexpandtab '. Cela devrait alors fonctionner (pour les retraits initiaux uniquement) pour tout paramètre d'arrêt de tabulation utilisé. Si vous faites cela, il pourrait être intéressant d’insérer des tabulations après le premier non vide. Sinon, les commentaires alignés seront incorrects lorsque "tabstop" est modifié.

La source:

13
ElasticThoughts

Une dernière chose, utilisez
:retab
pour convertir les tab existants en spaceshttp://vim.wikia.com/wiki/Converting_tabs_to_spaces

9
DawnSong

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

6
Alok Singh Mahor
5
Amarghosh

Ma base ~/.vimrc avec commentaire:

set number " show line number                                                                                           
set tabstop=2 " set display width of tab; 1 tab = x space with                                                           
set expandtab " transform tab to x space (x is tabstop)                                                               
set autoindent " auto indent; new line with number of space at the beginning same as previous                                                                      
set shiftwidth=2 " number of space append to lines when type >> 
0
o0omycomputero0o