@ heinrich5991 Je ne comprends pas. Je n'ai pas besoin de 8 espaces pour réaliser qu'une ligne est en retrait, et plus que nécessaire, cela signifie limiter les caractères que vous pouvez afficher sur une longue ligne de texte (au moins avant l'habillage). Mais a chacun le sien. :)
weberc2
40
@ heinrich5991 Mon argument est "utilisez le moins possible pour identifier facilement une ligne en retrait". Selon moi, la capacité à identifier facilement une indentation diminue rapidement à <3 espaces, et elle cesse d'augmenter à 4 espaces. Par conséquent, une indentation qui dépasse 4 espaces est un gaspillage, selon mon expérience.
weberc2
7
@ weberc2 Je ne pourrais pas être plus d'accord, mon pote. C'est pourquoi je me sens si foutrement claustrophobe en lisant Ruby ou "Javascript moderne", chacun utilisant 2 espaces pour l'indentation. Cela me donne légitimement une fatigue oculaire lorsque j'essaie de suivre des structures fortement imbriquées. Onglets durs pour la putain de victoire.
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 fois tabstop. Ceci est également utilisé par des choses comme les commandes =, >et <.
softtabstop
La définition d'une valeur non nulle autre que tabstopla 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 retabcommande.
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'
Il est également important de s'assurer que les Makefiles utilisent toujours des caractères d'onglet dur, sinon les builds échoueront! J'ai montré comment, sur stackoverflow.com/questions/234564/…
Shervin Emami
30
@Undefined Ce sont les paramètres du système vim. ~/.vimrccorrespond 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 ~/.vimrccela n'existera pas tant que vous ne l'aurez pas créé sur la plupart des systèmes.
Laurence Gonsalves
4
Les utilisateurs de Vim prennent note de la set softtabstop=4fonctionnalité! 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)! :-)
Ogre Psalm33
7
Quelqu'un peut-il m'aider à comprendre pourquoi cette réponse dit d'utiliser tabstop=8pour 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=4ce qui me semble un peu plus logique.
Kodos Johnson
6
@KodosJohnson L' tabstopoption 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+ expandtabpeut é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.
Laurence Gonsalves
747
Pour définir cela de façon permanente pour l'utilisateur actuel, créez (ou modifiez) le .vimrcfichier:
$ 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
Si vous n'avez pas ~ / .vimrc, essayez avec / etc / vim / vimrc. Dans mon cas sur Ubuntu 16.04, le fichier de configuration est là. Mais gardez à l'esprit que la modification de ce fichier entraînera une utilisation globale de la configuration.
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 ~/.vimrcfichier:
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):
" 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.
" 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é.
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 mcet tous les autres pour gagner du temps. Sinon, vous redéfinirez l'éditeur dans git, crontabetc.
Si vous définissez EDITOR, la plupart des programmes le respecteront.
D. Ben Knoble
@ D.BenKnoble vous avez raison. J'ai essayé. pour l'instant je préfère économiser mon temps et mes nerfs. ne peut pas vérifier exactement ce qui fonctionne avec F10in nanomais 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)
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 :
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):
Enfin, si vous souhaitez qu'un retrait corresponde à un seul onglet, vous devez également utiliser:
Pour les retraits composés de 4 caractères d'espace mais saisis avec la touche de tabulation:
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:
Pour plus de détails sur l'un de ces éléments, voir dans vim (par exemple )
:help 'optionname'
:help 'tabstop'
la source
~/.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 avecless
, ou tout autre éditeur saufvim
, 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'utilisertabstop=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:Collez ensuite la configuration ci-dessous dans le fichier. Une fois vim redémarré, les paramètres de l'onglet s'appliquent.
la source
:retab
pour convertir l'existanttab
enspaces
. vim.wikia.com/wiki/Converting_tabs_to_spacesou raccourci pour vim modeline:
la source
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:Usage:
Pour l'utiliser par extension de fichier, la syntaxe suivante peut être utilisée (ajoutée à
.vimrc
):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 :
Il permet d'utiliser 4 espaces pour chaque onglet et un mappage F9pour basculer les paramètres.
la source
J'ai copié et collé cela dans mon fichier .vimrc:
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.
la source
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
la source
:help tabstop
dans vim.Encore une chose, utilisez
:retab
pour convertir l'existant
tab
enspaces
http://vim.wikia.com/wiki/Converting_tabs_to_spacesla source
Voir Maîtriser l'éditeur de VI
la source
Ajouter une ligne
set ts=4
dans le
~/.vimrc
fichier par utilisateurou un
/etc/vimrc
fichier pour l'ensemble du systèmela source
Mon ~ / .vimrc de base avec commentaire:
la source
Permanent pour tous les utilisateurs (lorsque vous êtes seul sur le serveur):
Normalement sur un nouveau serveur
apt-get purge nano mc
et tous les autres pour gagner du temps. Sinon, vous redéfinirez l'éditeur dansgit
,crontab
etc.la source
F10
innano
mais je fais toujours quelques astuces avec save (c'est peutF10
- être une solution). ou ça ne marche passcreen
? Je ne me souviens pas, je déteste ça)