Vim: déplacements w et W en français

Bonjour à tous,
avec vim, en mode normal, w déplace le curseur au début du mot suivant.
Le mot est alors défini de façon restrictive par les caractères ascii alphanumériques.

Avec W la restriction se fait sur les caractères séparateurs de mot.

En français, les caractères accentués et ç sont considérés comme des séparateurs, limitant l’action de w, et pour échapper à cette limite, si on utilise W, l’action devient alors trop large.

Je suppose que la puissance de vim devrait permettre de prendre en compte l’UTF8 pour permettre de redéfinir les caractères de texte accentués avec le même statut que les caractère alphabétiques non accentués, ascii?

Malgré mes approximations de béotien, j’espère avoir été assez explicite pour les vimistes sur la question à résoudre.

Peut-être de quoi méditer pendant l’été :wink:

Bonjour

J’utilise vim en mode texte
installé par le paquetage vim-nox :

michel@debbull:~$ apt policy vim-nox 
vim-nox:
  Installé : 2:8.2.2434-3
  Candidat : 2:8.2.2434-3
 Table de version :
 *** 2:8.2.2434-3 500
        500 http://deb.debian.org/debian bullseye/main amd64 Packages
        100 /var/lib/dpkg/status
michel@debbull:~$ 

et je n’ai pas constaté le comportement que tu décris :
Les caractères accentués et autres sont biens compris comme faisant partie des mots
et ne sont pas interprétés comme des séparateurs de mots.

Merci MicP, voila une bonne nouvelle!
la moins bonne c’est que vim-nox est bien installé (buster), et c’est sans une autre version qui est appelée:

apt policy vim-nox
    vim-nox:
      Installé : 2:8.1.0875-5
      Candidat : 2:8.1.0875-5
     Table de version :
     *** 2:8.1.0875-5 500
            500 http://deb.debian.org/debian buster/main amd64 Packages
            100 /var/lib/dpkg/status

La solution sera donc dans la mise à niveau vers Bullsey.

J’ai le même comportement correct et la même version du paquetage vim-nox
installé sur debian 10 (buster) :

michel@debvirt:~$ apt policy vim-nox 
vim-nox:
  Installé : 2:8.1.0875-5
  Candidat : 2:8.1.0875-5
 Table de version :
 *** 2:8.1.0875-5 500
        500 http://deb.debian.org/debian buster/main amd64 Packages
        100 /var/lib/dpkg/status
michel@debvirt:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 10 (buster)
Release:	10
Codename:	buster
michel@debvirt:~$ 

Essaye de créer un autre compte utilisateur
juste pour voir si ça ne serait pas une configuration spécifique de vim sur ton compte utilisateur qui provoque ce comportement chez toi

Désolé:

update-alternatives --config vim

m’a montré que je n’utilisais pas la version vim-nox, mais vim.gtk !

Salut,
j’ai repris une partie de ton texte en y rajoutant hameçon, voici le comportement de neovim en console (je sais ça n’est pas vim :wink: ):

En français, les caractères accentués et ç de hameçon sont considérés comme des séparateurs, limitant l’action de w, et pour échapper à cette limite, si on utilise W, l’action devient alors trop large.

w ou W, les caractères accentués et ç sont ignorés (considérés comme caractères normaux),

  • w: considère comme mot, les virgules, apostrophes, ainsi que la lettre précédente,
  • W: les ignore.

Je n’ai pas pu tester vim-gtk tout seul parce que j’avais déjà installé vim-nox sur toutes mes machines,
et en ajoutant vim-gtk à vim-nox je ne constate pas le problème en utilisant gvim

Bonjour josephtux

avec :h word j’obtient

Un « mot » consiste en une séquence de lettres, chiffres et soulignés ‹ _ ›, ou
une séquence d’autres caractères non-blancs, séparés par des espaces blancs
(espaces, tabulations, ). Cette définition peut être modifiée via
l’option ‹ iskeyword ›.

:h iskeyword

   chaîne	(défaut Vim sur MS-DOS et Win32 :
    "@,48-57,_,128-167,224-235",
  	 autres : "@,48-57,_,192-255",
  	 défaut Vi : "@,48-57,_")

Peut être modifier iskeyword.

Re,

je viens de vérifier sur un autre compte avec un vim sans .vimrc (pas de vim-nox), ça fonctionne correctement.

Merci pour tous ces éclairages.

C’est en effet une autre cause que le paquet choisi, car la particularité subsiste, avec:

iskeyword=a-z,A-Z,48-57,:,/,.

Je cherche donc où iskeyword a pu être modifié, et surprise, s’il n’y a rien dans les fichiers de vimrc standards (ceux indiqués par la commande :version), ans l’arborescence encombrée de *~/.vim/ , grep trouve ceci, bien confusionnant!

./ftplugin/latex-suite/templates/stopped.vim:set iskeyword=48-57,a-z,A-Z,192-255,:
./ftplugin/latex-suite/templates/stopped.vim:setlocal iskeyword=48-57,a-z,A-Z,192-255,:
./ftplugin/tex.vim:set iskeyword+=!
./ftplugin/tex.vim:« set iskeyword+=:
./ftplugin/tex.vim.squeeze:set iskeyword+=:
./Help_Highlight_et_Pattern:setlocal iskeyword=@,48-57,_,192-255
./Help_Highlight_et_Pattern:setlocal iskeyword=!-~,^*,^|,^ »,192-255
./mescommandes.tex.vss:set iskeyword=a-z,A-Z,48-57,:,/,.,!
./mescommandes.tex.vss:setlocal iskeyword=48-57,a-z,A-Z,192-255
./plugin/perl_doc.vim:setlocal iskeyword=a-z,A-Z,48-57,:,/,. " Adds / and . as used in requires.
./plugin/perl-doc.vim.agostini.bkp:setlocal iskeyword=a-z,A-Z,48-57,:,/,. " Adds / and . as used in requires.
./plugin/perl-doc.vim.bak:setlocal iskeyword=a-z,A-Z,48-57,:,/,. " Adds / and . as used in requires.
./stopped.vim:setlocal iskeyword=a-z,A-Z,48-57,:,/,.
./.tex.vss:set iskeyword=a-z,A-Z,48-57,:,/,.,!
./.tex.vss:setlocal iskeyword=48-57,a-z,A-Z,192-255
./vi:« set iskeyword+=:
./vi: » et set iskeyword+=! ou set iskeyword+== ou set iskeyword+=/
./view/=+usr=+local=+bin=+BKP_php75_new=:setlocal iskeyword=a-z,A-Z,48-57,:,/,.
Fichier binaire ./vim-latex-1.10.0.tar correspondant

Il me reste donc à faire le ménage.

Si j’ai bien compris:
192-255 correspond aux caractères français (accentués, ç)
:set iskeyword=xxx remplace la valeur par xxx
:set iskeyword+=xxx ajoute la valeur xxx aux valeurs actuelles

Encore merci à limax et à tous