Mon réglage actuel suppose 8 espaces; comment pourrais-je le redéfinir?
Mon réglage actuel suppose 8 espaces; comment pourrais-je le redéfinir?
Réponses:
Cela dépend de ce que vous voulez dire. Voulez-vous que les caractères de tabulation réels de votre fichier apparaissent sur 4 espaces de large, ou par "tabulation", voulez-vous réellement dire un retrait , généré en appuyant sur la touche de tabulation, ce qui entraînerait le fichier contenant littéralement (jusqu'à) 4 caractères d'espace pour chaque "onglet" que vous tapez?
Selon votre réponse, l'un des ensembles de paramètres suivants devrait vous convenir:
Pour les tabulations qui apparaissent sur 4 espaces :
set tabstop=4
Si vous utilisez un caractère de tabulation réel dans votre code source, vous souhaitez probablement également ces paramètres (ce sont en fait les valeurs par défaut, mais vous pouvez 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'espace mais saisis 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 voudriez simplement comprendre ce que ces options signifient toutes, voici une ventilation de ce que chaque option signifie:
tabstop
La largeur d'un tabstop dur mesurée en "espaces" - en fait la largeur (maximale) d'un caractère de tabulation réel.
shiftwidth
La taille d'un "retrait". Il est également mesuré en espaces, donc si votre base de code se met en retrait avec des caractères de tabulation, vous voulez
shiftwidth
égaler le nombre de caractères de tabulation foistabstop
. Ceci est également utilisé par des choses comme les commandes=
,>
et<
.
softtabstop
La définition d'une valeur non nulle autre que
tabstop
la touche de tabulation (en mode insertion) insérera une combinaison d'espaces (et éventuellement de tabulations) pour simuler les taquets de tabulation à cette largeur.
expandtab
Si vous activez cette option, la touche de tabulation (en mode insertion) insère des espaces au lieu des caractères de tabulation. Cela affecte également le comportement de la
retab
commande.
smarttab
Si vous activez cette option, la touche de tabulation (en mode insertion) insère des espaces ou des tabulations pour passer au retrait suivant du tabstop suivant lorsque le curseur est 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 de ces éléments, voir dans vim (par exemple ):help 'optionname'
:help 'tabstop'
~/.vimrc
correspond aux paramètres vim de l'utilisateur. La plupart des gens laissent les paramètres système seuls et modifient simplement les paramètres utilisateur. Notez que ~/.vimrc
cela n'existera pas tant que vous ne l'aurez pas créé sur la plupart des systèmes.
set softtabstop=4
fonctionnalité! Je suis fatigué d'essayer de lire votre code avec less
, ou tout autre éditeur sauf vim
, seulement pour voir une indentation farfelue parce que vous avez redéfini tab comme un nombre arbitraire d'espaces (même si le reste du système pense le contraire)! :-)
tabstop=8
pour les retraits composés de 4 espaces? Je n'ai pas pu comprendre la raison après avoir lu les descriptions des différents paramètres. Une autre réponse dit d'utiliser tabstop=4
ce qui me semble un peu plus logique.
tabstop
option contrôle la largeur d'un caractère de tabulation rigide. Si vous souhaitez que vos retraits soient constitués de 4 caractères d'espace, plutôt que de caractères de tabulation simples qui sont larges de 4, alors la largeur de votre caractère de tabulation n'a pas d'importance - en quelque sorte . En pratique, vous souhaiterez probablement que la largeur du caractère de tabulation soit différente de la largeur de vos retraits, afin de réduire le risque que les caractères de tabulation se présentent comme des retraits appropriés. ( list
+ expandtab
peut également aider ici). En outre, les onglets de 8 caractères sont "la norme" - votre terminal, Python et de nombreux autres outils utilisent par défaut des onglets de 8 caractères.
Pour définir cela de façon permanente pour l'utilisateur actuel, créez (ou modifiez) le .vimrc
fichier:
$ vim ~/.vimrc
Collez ensuite la configuration ci-dessous dans le fichier. Une fois vim redémarré, les paramètres de l'onglet s'appliquent.
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
:retab
pour convertir l'existant tab
en spaces
. vim.wikia.com/wiki/Converting_tabs_to_spaces
Il existe peu de paramètres qui définissent s'il faut utiliser des espaces ou des tabulations.
Voici donc des fonctions pratiques qui peuvent être définies dans votre ~/.vimrc
fichier:
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, la syntaxe suivante peut être utilisée (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
set 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 F9pour basculer les paramètres.
J'ai copié et collé cela 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 paramètres signifient que lorsque j'appuie sur Tab, j'obtiens 4 espaces. Le troisième paramètre signifie que lorsque je le fais V>
(c'est-à-dire visuel et retrait), j'obtiens également 4 espaces.
Pas aussi complet que la réponse acceptée, mais cela pourrait aider les personnes qui veulent simplement copier et coller quelque chose.
Mettez vos paramètres souhaités dans le fichier ~ / .vimrc - Voir ci-dessous pour quelques directives et meilleures pratiques.
Il existe quatre façons principales d'utiliser les onglets dans Vim:
Gardez 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 en tapant et en se comportant comme un onglet apparaît tous les 4 (ou 3) caractères.
Remarque: la définition de 'tabstop' sur toute autre valeur que 8 peut faire apparaître votre fichier incorrect à de nombreux endroits (par exemple, lors de l'impression).
Réglez «tabstop» et «shiftwidth» sur 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é.
Réglez «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. Fonctionne uniquement lorsque vous utilisez Vim pour modifier le fichier.
Définissez toujours 'tabstop' et 'shiftwidth' sur la même valeur, et 'noexpandtab'. Cela devrait alors fonctionner (pour les retraits initiaux uniquement) pour tout paramètre de tabulation utilisé par les utilisateurs. Si vous le faites, il peut être intéressant d'avoir des tabulations après le premier non vide inséré en tant qu'espaces. Sinon, les commentaires alignés seront incorrects lorsque «tabstop» est modifié.
La source:
:help tabstop
:help tabstop
dans vim.
Encore une chose, utilisez
:retab
pour convertir l'existant tab
en spaces
http://vim.wikia.com/wiki/Converting_tabs_to_spaces
:set sw=4
Ajouter une ligne
set ts=4
dans le
~/.vimrc
fichier par utilisateur
ou un
/etc/vimrc
fichier pour l'ensemble du système
Mon ~ / .vimrc de base 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 >>
Permanent pour tous les utilisateurs (lorsque vous êtes seul sur le serveur):
# echo "set tabstop=4" >> /etc/vim/vimrc
Normalement sur un nouveau serveur apt-get purge nano mc
et tous les autres pour gagner du temps. Sinon, vous redéfinirez l'éditeur dans git
, crontab
etc.
F10
in nano
mais je fais toujours quelques astuces avec save (c'est peut F10
- être une solution). ou ça ne marche pas screen
? Je ne me souviens pas, je déteste ça)