retour à la ligne vim avec retrait


20

Vim / gvim encapsulera de longues lignes comme ceci:

000000000000000000000000000000000000|
00000000000000                      |
    11111111111111111111111111111111|
111111111111111111                  |
    22222222222222222222222222222222|
222222222222222222                  |
        3333333333333333333333333333|
3333333333333333333333              |

Existe-t-il un moyen pour que Vim encapsule ces lignes à la place:

000000000000000000000000000000000000|
 00000000000000                     |
    11111111111111111111111111111111|
     111111111111111111             |
    22222222222222222222222222222222|
     222222222222222222             |
        3333333333333333333333333333|
         3333333333333333333333     |

Je veux que la ligne enveloppée commence un peu après le retrait de l'endroit où cette ligne a commencé. (Juste pour être clair, je parle d'habillage, pas de largeur de texte.)

Je veux que l'indentation de la ligne soit prise en compte dans l'habillage de cette ligne afin que la structure du code ne soit pas masquée par les lignes encapsulées.

Réponses:


17

MISE À JOUR: Cette fonctionnalité a atterri dans vim 7.4.338, bien que vous souhaitiez 7.4.354 ou version ultérieure .


Donc, apparemment, cela nécessite un patch pour Vim . Il y a un patch de Vaclav Smilauer datant de 2007. J'ai mis à jour le patch pour qu'il fonctionne avec Vim 7.2.148 de Fedora 11. Mais il semble faire l'affaire.


1
Comme Fedora publie des mises à jour pour Vim, je mets à jour le correctif. Voir retracile.net/wiki/VimBreakIndent pour les dernières informations.
retracile

Des points bonus pour quelqu'un qui peut expliquer comment faire fonctionner cela avec MacVim.
donut

Où est le patch? Ce site ne contient aucun lien que je peux voir
puk

@puk: Désolé, une mise à niveau logicielle majeure a modifié certains emplacements de liens. Je les ai réparés maintenant.
retracile

1
À partir d'aujourd'hui (25 juin 2014), le patch breakindent fait officiellement partie de Vim 7.4 - il est ajouté par les patchs 338 et 345.
Heptite

14

Dans votre .vimrc:

set wrap               " soft-wrap lines

" requires +linebreak compile-time option (not in the 'tiny' and 'small' builds); check your :version
set showbreak=----->   " prefix for soft-wrapped lines (no actual line break character)
"set linebreak          " soft-wrap lines only at certain characters (see :help breakat)

" If you like line numbers, you may want this instead:
"set number
"set showbreak=------>\  " line up soft-wrap prefix with the line numbers
"set cpoptions+=n        " start soft-wrap lines (and any prefix) in the line-number area

Ou saisissez simplement :set showbreak=----->n'importe quelle session.

Pour référence, mon parcours de recherche (Vim 6.2): :help 'wrap'-> :help 'linebreak'-> ( :help 'showbreak'-> :help 'cpoptions', :help 'breakat')


Très cool, mais pas vraiment ce que je voulais dire. Vous l'avez pris un peu plus littéralement que je ne le pensais, donc ma faute. Je vais voir si je peux clarifier.
retracile

1

La solution à votre question peut être obtenue en définissant deux paramètres dans votre vimrc:

Pour rompre les lignes avec la même indentation: set breakindent

Et un espace pour mettre en retrait les lignes souples: let &showbreak=' '

Cela fonctionnera de cette façon:

111111111111111|
 11111111111111|
 11111         |
222222222222222|
 222222222222  |
333333333333333|
 33333         |

0

Ce n'est pas la réponse parfaite que vous cherchez, mais voici ce que je fais pour contourner le manque d'indentation approprié de vim.

Tout d'abord, téléchargez le guide de retrait de Nathanael Kane (facultatif) car il indique mieux à quel niveau de retrait vous vous trouvez, même au point où vous pouvez définir des largeurs de tabulation à seulement 2 espaces!

Deuxièmement, mappez une combinaison de touches pour basculer le retour à la ligne. J'ai le mien réglé sur 'r' pour 'wrap' ('w' est pour économiser) comme ça

:noremap <leader>r :set nowrap! <CR>

Ensuite, j'ai toujours un retour à la ligne, car c'est plus agréable sur le plan esthétique, et je l'active rapidement si j'ai besoin de modifier la ligne.


0

La fausse "solution de contournement" que j'utilise actuellement est d'avoir une indentation fixe mais importante dans le préfixe. Il semble bon, tant que cette indentation fixe est plus grande que l'indentation de la ligne enveloppée, ce qui est le cas la plupart du temps.

" 'showbreak'   : string to put before wrapped screen lines
set sbr=\ \ \ \ \ \ \ \ \ \ \ \ \ \|\ 
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.