gemini-capsule/capsule/content/gemlog/2022-09-26-pas-de-largeur-d...

60 lines
2.7 KiB
Plaintext
Raw Permalink Normal View History

2022-09-26 19:28:25 +00:00
---
title: pas de largeur de ligne en gemini
date: 2022-09-26
2022-10-15 16:47:52 +00:00
params:
tags: vim, écriture
2022-09-26 19:28:25 +00:00
---
Hier, j'ai découvert qu'il n'était pas recommandé, plutôt il ne fallait pas mettre de longueur maximum à une ligne avec du contenu en text/gemini. C'est la raison pour laquelle j'ai rencontré des soucis d'affichage dans certains navigateur. Sauf qu'écrire dans vim sans ce "set textwidth=80" me gêne. Je dois donc trouver la bonne configuration pour que l'affichage soit automatique sans forcément découper les lignes à 80 caractères maximum.
Donc visiblement, il faut jouer avec "wrap" qui est activé par défaut dans ma config. Mais cela ne permet pas de couper le texte à un mot. Pour cela, il faut activer "linebreak". On commence à avoir quelque chose d'intéressant mais ce n'est pas sastisfaisant.
A partir d'une fonction [1] que j'ai un peu remanié, j'active le mode "wrap + linebreak" automatiquement ainsi que le remappage de touche afin de naviguer facilement dans ce mode. Le texte s'aligne automatiquement à la largeur de la fenêtre et on peut facilement naviguer comme si on avait activé "textwidth". L'avantage du "wrap + linebreak" c'est qu'il est non instrusif et que l'on peut facilement passer d'un mode à l'autre. Ici c'est avec "<leader>w" qu'on peut changer d'un mode à l'autre. De plus, sur la base d'un poste reddit [2], j'ai ajouté l'activation du mode wrap quand il s'agit de fichiers markdown ou gemini.
Voici le code que j'ai rajouté à mon .vimrc:
```
let s:wrapenabled = 0
set wrap nolist
function! EnableWrap()
set linebreak
nnoremap j gj
nnoremap k gk
nnoremap 0 g0
nnoremap ^ g^
nnoremap $ g$
vnoremap j gj
vnoremap k gk
vnoremap 0 g0
vnoremap ^ g^
vnoremap $ g$
let s:wrapenabled = 1
endfunction
function! DisableWrap()
set nolinebreak
unmap j
unmap k
unmap 0
unmap ^
unmap $
let s:wrapenabled = 0
endfunction
function! ToggleWrap()
if s:wrapenabled
call DisableWrap()
else
call EnableWrap()
endif
endfunction
map <leader>w :call ToggleWrap()<CR>
au BufRead,BufNewFile *.gmi call EnableWrap()
au BufRead,BufNewFile *.md call EnableWrap()
```
Donc maintenant, avec ça, je ne devrais plus avoir les soucis d'affichage en fonction des navigateurs. J'aurais aimé avoir une largeur d'écran définit mais les différentes options que j'ai vu n'était pas très intéressante. Je peux cependant jouer avec la largeur de ma fênetre, c'est suffisant. Il va falloir que je repasse sur les autres billets pour les mettre à jour.
=> https://vimtricks.com/p/word-wrapping/ [1] une fonction pour basculer du mode écriture à code
=> https://www.reddit.com/r/vim/comments/cfzk9i/how_to_wrap_long_lines_when_writing_markdown_on/ [2] post reddit ou l'on associe une fonction à un type de fichier