Voici mon cas d'utilisation:
J'ai beaucoup de code qui, en raison de l'application du style, nous écrivons des sauts de ligne après et avant chaque accolade ouverte et fermée (respectivement).
Exemple:
function func(args) {
statement 1;
statement 2;
if (condition) {
statement 3;
}
}
Bien que cela soit agréable et facile à lire, je considère que c'est un gaspillage d'espace digne d'explications, mais mes coéquipiers ne sont pas d'accord avec moi. Fondamentalement, c'est ainsi que nous vérifions notre code et c'est tout.
Je pensais que je pourrais peut-être utiliser les fonctionnalités de Vim pour m'aider à économiser de l'espace sur l'écran, tout en me permettant d'écrire le code de manière verbeuse. Cela ne me dérange pas de le taper, je veux juste une utilisation plus efficace de l'espace. Je me suis dit que je pourrais peut-être demander à Vim de réduire automatiquement les lignes vides gratuites.
Je trouve un peu difficile de configurer cela en utilisant des règles de syntaxe parce que tout ce que j'écris semble entrer en conflit avec les règles de syntaxe existantes, mais ce que j'ai décidé de faire comme première tentative était d'écrire ces règles qui n'entreront pas en collision:
syntax match aaaaaaaaa "\vabcd" conceal cchar=A
syntax match bbbbbbbbb "\vef\ngh" conceal cchar=B
La deuxième règle ici est proche de ce que je veux, ce qui pour le cas du crochet ouvert est quelque chose comme /\v\{(\n\s*){2,}
: faire correspondre un crochet ouvert avec un nombre supérieur ou égal à 2 d'une nouvelle ligne suivi uniquement d'un espace.
Cependant, ce qui se passe à l'intérieur de vim est le suivant:
Si je tape
abcd
une ligne, elle est cachéeA
comme prévu.Si je tape
ef
sur une ligne etgh
sur la suivante, les DEUX lignes deviennent cachées avecB
.
J'espérais vraiment que les deux lignes ef\ngh
auraient été cachées en une seule ligne afin de pouvoir économiser de l'espace tampon vertical de cette façon.
Mais je vois maintenant que c'est probablement un problème de détail d'implémentation de Vim. La réduction des lignes est un problème à résoudre pour le pliage de code, probablement juste hors de portée en ce qui concerne la dissimulation.
Je me demande donc s'il y a encore un moyen de faire ce que je veux faire. Peut-être utiliser des marqueurs de pliage d'une manière ou d'une autre? Le problème est que je dois replier uniquement les espaces vides.
:h fold-expr
et:h 'fdm'
git
vous pourriez même être en mesure d'utiliser des crochets pour appliquer les modifications de manière transparente.