Réponse unifiée:
Si vous utilisez des onglets
J'essaierais d'utiliser des listchars:
:set listchars=tab:\|\
:set list
remarque: il y a un espace après le dernier \
ci-dessus.
Cette méthode est bonne car elle utilise le support intégré de Vim pour montrer ce genre de chose.
Exemple de sortie:
| if (1) {
| | func();
| }
Cependant, cela ne fonctionne pas pour les espaces de début. Comme l'a souligné @Josh Petrie, il existe un correctif pour les espaces , mais vous devrez alors recompiler Vim, ce qui dépasse le cadre de cette réponse.
Si vous utilisez des espaces et que cela ne vous dérange pas d'utiliser un plugin
Vaibhav Sagar indique que le plugin indentLine exécute cette fonctionnalité.
Installez-le normalement (voir installer des plugins ) et cela semble fonctionner comme par magie sans autre intervention. Si les barres ASCII ne vous dérangent pas, vous n'avez rien à faire avec vos polices. Exemple de sortie de votre exemple après avoir défini vos paramètres d'indentation et exécuté:IndentLinesReset
45 ¦ var move = function(direction) {
46 ¦ ¦ if(!initialized) { initialize(); }
47
48 ¦ ¦ if(shiftBoard(direction)) {
49 ¦ ¦ ¦ setTimeout(addRandomPiece, 100);
50 ¦ ¦ }
51 ¦ };
Le plugin nécessite Vim 7.3 ou une version ultérieure et permet à Cleaver d’utiliser la fonctionnalité Dissimulation de cette version. Au lieu de masquer du texte, il remplace le texte par des barres dans la vue, mais pas le tampon réel. Le résultat est que vous voyez les barres mais elles ne sont pas enregistrées dans le fichier (car ce sont en fait des espaces)
Caveat
Ces deux méthodes supposent du code "correctement" mis en retrait. Ils ne placent pas les lignes d'indentation au niveau d'indentation lorsqu'un "bloc" est ouvert (ce que le sublime semble faire), mais placent des lignes à intervalles réguliers en fonction de vos paramètres d'indentation. De plus, il ne montre que les barres sur les lignes où il y a réellement un espace (c'est pourquoi la ligne dans la sortie vim sous la première if
n'a pas de barres, ce qui crée un espace visuel)
Une autre option que j’utilise, qui ne correspond pas exactement à ce que vous avez demandé, mais remplit le même objectif, qui permet de voir plus facilement ce qui se trouve dans la même colonne, consiste à définir ce qui suit dans votre
vimrc
:En contrepartie, vous devez déplacer votre curseur sur la colonne que vous voulez voir, mais vous obtenez moins d'encombrement visuel. Habituellement, quand je me soucie des niveaux d'indentation, je garde quand même ma place avec le curseur. Mon chemin n’est pas aussi gênant dans des langages comme le python sans accolades fermantes.
la source
Par souci d'exhaustivité, il existe également le plug-in Indent Guides , qui indique les niveaux d'indentation en alternant les couleurs des espaces blancs. Il nécessite la version 7.2 ou ultérieure. Puisqu'il utilise les variables
tabstop
etshiftwidth
, il fonctionnera probablement pour vos paramètres d'indentation immédiatement.Une fois le plugin installé, vous pouvez simplement utiliser
:IndentGuidesEnable
ou:IndentGuidesDisable
. Si vous utilisez Terminal vim, notez que, selon le manuel,Afin de changer les couleurs des guides pour la capture d'écran, j'ai utilisé ce qui suit
de sorte que les couleurs ne sont pas recalculées lorsque les tampons sont échangés, puis définissez les couleurs à l'aide de
Comme pour les autres solutions présentées, il ne montre que les repères de retrait sur des lignes où il y a des espaces.
la source
let g:indent_guides_enable_on_vim_startup=1
à mon fichier .vimrc pour l'activer au démarrage.J'ai trouvé le plugin indentLine comme étant le meilleur pour cela. Vous avez toutefois besoin d’une police avec les symboles appropriés. Je trouve que Consolas sous Windows et Menlo sous Mac OS X fonctionnent bien. Comme indiqué dans la réponse unifiée ci-dessus, cela fonctionne en utilisant (ab) en utilisant la
conceal
fonctionnalité de vim pour placer les barres verticales (à partir de la police utilisée) au bon endroit. Je suis assez satisfait de cette solution mais l’inconvénient est que mes barres verticales font partie des glyphes de dessin de boîtes et qu’elles sont alignées au centre au lieu d’être alignées à gauche, comme dans les autres éditeurs. Je me suis habitué à cela, mais il peut être corrigé en appliquant manuellement un correctif à votre police ou en utilisant une police telle que Fantasque Sans Mono (notez comment les captures d'écran du référentiel github lié utilisent indentLine).la source
Le plug-in indentLine a tendance à être assez lent sur les fichiers de petite taille, ce qui se remarque lorsque vous cliquez sur Entrée car il est en retard d'une seconde environ.
J'ai trouvé que vim-indentguides était un plugin plus rapide et similaire sur le plan visuel, qui distinguait également visuellement les retraits tabulation par rapport aux retraits spatiaux.
la source