Mon paramètre actuel suppose 8 espaces. Comment pourrais-je le redéfinir?
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 foistabstop
. 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'
).
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
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 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.
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.
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:
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).
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é.
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.
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:
Une dernière chose, utilisez:retab
pour convertir les tab
existants en spaces
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
Ajouter une ligneset ts=4
dans~/.vimrc
fichier par utilisateur
ou/etc/vimrc
fichier pour l'ensemble du système
:set sw=4
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 >>