2013-05-06 2 views
0

J'essaie de personnaliser le style de pliage vim et coincé avec indentation. Je sais qu'il a été demandé à plusieurs reprises ici et j'utiliser cette commande (qui semblent travailler pour d'autres) pour tester l'apparence du pli:vim plier le texte avec des espaces en face

:set foldtext=' '.foldtext() 

Cela me donne cependant une erreur 'option inconnue. Apparemment, il n'accepte pas la chaîne contenant seulement l'espace (s), parce que ce

:set foldtext='mytext'.foldtext() 

fonctionne très bien et ajoute « mytext » au début des plis.

Pourquoi cela ne fonctionne-t-il pas et comment s'y prendre?

Répondre

1

Vous avez juste besoin d'échapper à l'espace. Utilisez ceci à la place.

:set foldtext='\ '.foldtext() 

L'espace est à l'origine vim de penser que vous souhaitez définir foldtext à ' puis '.foldtext() est l'argument suivant à définir. Toutefois, ce n'est pas ce que vous voulez et la raison pour laquelle le message d'erreur est

E518: Unknown option: '.foldtext() 

Échapper l'espace vim que foldtext='\ '.foldtext() dire est un argument au lieu de deux.

+0

Aha, merci! Cela fonctionne, étrangement il y a ~ 10 versions différentes que j'ai trouvées en ligne qui n'ont pas fonctionné pour moi mais qui ont fonctionné pour d'autres ... – sashkello

0

Vous pouvez utiliser le plug-in EightHeader si vous préférez le texte plié aligné. Exemple de l'aide:

Si vous n'aimez pas le 'texte en texte par défaut', vous pouvez le personnaliser en le réglant sur EightHeaderFolds().

Par exemple, les plis fermés ressemble à ceci par défaut:

```+-- 45 lines: Fold level one 
+--- 67 lines: Fold level two 

Si vous souhaitez changer à ce genre:

Fold level one................45 lines 
    Fold level two..............67 lines 

... alors vous pouvez utiliser cette fonction:

let &foldtext = "EightHeaderFolds('\\=s:fullwidth-2', 'left', [ repeat(' ', v:foldlevel - 1), '.', '' ], '\\= s:foldlines . \" lines\"', '')" 
Questions connexes