Je veux utiliser la fonctionnalité soft wrap de Vim (:set wrap
) pour envelopper du code à 80 caractères, quelle que soit la largeur réelle de ma fenêtre.
Je n'ai pas encore trouvé le moyen de le faire - tout en douceur semble être lié à la largeur de la fenêtre
textwidth
et wrapmargin
sont tous les deux destinés à un habillage rigide (ils insèrent des caractères de nouvelle ligne dans le fichier):vertical resize 80
(éventuellement avec :set breakat=
pour autoriser les pauses sur n'importe quel caractère) sur l'une de ces œuvres (même si c'est un peu hackish), mais elle s'interrompt avec :set number
car les numéros de ligne occupent un nombre variable de colonnes (en fonction de la longueur du fichier) et font partie des 80.Y a-t-il un moyen de faire cela dans vim? Cela ne semble pas prometteur, selon d'autres sources .
Pour le moment, mon approximation consiste simplement à utiliser /^.\{80}\zs.\+
comme recherche par défaut, de sorte qu'elle soit au moins en surbrillance. J'ai pensé à ajouter un élément :syntax
pour cet élément, mais cet élément ne fonctionnait pas lorsqu'il chevauchait d'autres éléments de syntaxe. J'ai donc abandonné cette idée.
Vous pourriez
:set numberwidth=6
et :set columns=86
(ou avec la souris) à la taille appropriée. Si vous modifiez un fichier contenant un million de lignes, vous rencontrerez peut-être des problèmes, mais cela est peu probable. Vous gaspillez ainsi 6 colonnes d’écran immobilier. Donc, il y a encore toutes sortes de problèmes.
Vous pouvez mettre en évidence au-delà de la 80e colonne en utilisant :match
comme il est dit ici et ici .
Au-delà de cela, je ne vois aucun moyen de le faire. On dirait que ce serait une fonctionnalité intéressante de Nice.
Je n'ai pas de solution au problème, mais en ce qui concerne le marquage d'une colonne, à partir de Vim 7.3 (publié le 2010-08-15), :set colorcolumn=80
surlignera la colonne 80. La couleur dépend de votre fichier de syntaxe.
Voir La disposition des colonnes de Vim 80 concerne , :h colorcolumn
.
Essaye ça:
set columns=80
autocmd VimResized * if (&columns > 80) | set columns=80 | endif
set wrap
set linebreak
set showbreak=+++
Vous pouvez supprimer la if (&columns > 80) |
si toujours voulez 80 colonnes.
Avez-vous essayé 'linebreak'
?
*'linebreak'* *'lbr'* *'nolinebreak'* *'nolbr'*
'linebreak' 'lbr' boolean (default off)
local to window
{not in Vi}
{not available when compiled without the |+linebreak|
feature}
If on Vim will wrap long lines at a character in 'breakat' rather
than at the last character that fits on the screen. Unlike
'wrapmargin' and 'textwidth', this does not insert <EOL>s in the file,
it only affects the way the file is displayed, not its contents. The
value of 'showbreak' is used to put in front of wrapped lines.
This option is not used when the 'wrap' option is off or 'list' is on.
Note that <Tab> characters after an <EOL> are mostly not displayed
with the right amount of white space.
Il n'y a pas de bonne façon de le faire. Nous pouvons pirater un setlocal softwrap
de fortune avec autocmd
si nous modifions @eborisch answer. Si nous redimensionnons chaque fois que nous entrons dans un tampon et que nous redimensionnons à une longueur particulière lorsque la variable locale softwrap
est définie, nous obtenons le comportement souhaité.
Supposons que nous voulions retourner à 80 colonnes, nous pouvons écrire ce qui suit dans .vimrc
.
augroup softwrap
autocmd VimResized * if (exists('b:softwrap') && &columns > 80) | set columns=80 | endif
autocmd BufEnter * set columns=999
augroup END
Pour activer le mode pour un tampon particulier, utilisez les commandes suivantes:
let b:softwrap=1
set columns=80