Personnaliser les paramètres d'identification automatique dans un fichier VIMRC

2

J'ai autoindent activé dans mon fichier .vimrc mais je suis tombé sur un bug / une fonctionnalité gênante. Par exemple, lorsque je suis tabulé 3 fois et que je clique sur Entrée, la nouvelle ligne est également tabulée 3 fois. Ensuite, lorsque je tape à nouveau sur Entrée, cette nouvelle ligne est également mise en retrait 3 fois, comme il se doit. Le problème survient lorsque je remonte à la ligne précédente (la première des 2 nouvelles lignes). VIM supprime automatiquement les espaces blancs car il les voyait comme une ligne vide.

Y a-t-il un moyen d'empêcher que cela se produise? J'aimerais pouvoir revenir au codage comme ceci:

fonction test () { <return> <return>}<up> <right>

Merci!

Shane Reustle
la source

Réponses:

2

Je ne connais aucun paramètre d’option qui obligerait Vim à laisser automatiquement ces lignes avec les espaces blancs en tête. La solution habituelle consiste à modifier votre style de montage de manière à ne pas perdre cet espace, à utiliser une commande en mode normal telle que o, Oou Sà créer une nouvelle ligne pour que l'indentation soit automatiquement effectuée, ou à forcer l'indentation sur la ligne en cours. ligne en mode insertion avec Ctrl-Tou Ctrl-F.

Cependant, si vous voulez vraiment utiliser cette séquence de touches particulière et ne pas perdre votre retrait, je pense que ce mappage fonctionnera.

:inoremap <Return> <Space><BS><Return>

En mettant un espace (ou n'importe quel caractère) sur la ligne, puis en espaçant l'arrière-dessus, vous indiquez à Vim qu'il s'agit d'une ligne non vide et qu'elle laissera les espaces blancs en tête.

Garyjohn
la source
1

Remapper le <Retour> ou <CR> semble génial. Il y a un inconvénient: l'utilisation de l'auto-complétion (<Cn>) de Vim est plus difficile à utiliser. Il se heurte également à des plugins qui s'appuient sur le comportement par défaut, par exemple supertab .

Cette page: http://vim.wikia.com/wiki/Get_the_correct_indent_for_new_lines_despite_blank_lines fournit une solution alternative: ajouter une fonction pour obtenir le retrait approprié malgré les lignes vides précédentes.

dgo.a
la source