pas de largeur de ligne en gemini

Publié le 26-09-2022

🏷️ vim, écriture

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.

[1] une fonction pour basculer du mode écriture à code

[2] post reddit ou l'on associe une fonction à un type de fichier

💬 Une question, une remarque, contactez-moi :)

Le contenu de cette page est disponible sous licence CC-BY-SA