[Vim] Ré-identation différente suivant la position du curseur

La question :

Bonjour,

J'ai un comportement bizarre quand je force la ré-indentation d'une
ligne de code (C++) dans Vim (7.0, mais j'ai testé rapidement avec 7.2
et j'ai le même comportement), avec Ctrl-F.

Le bout de code suivant est tapé sans se préoccuper des identations
(cad en laissant vim indenter tout seul) :

f(
a, // deux tabs
b // deux tabs
); // un espace

Vim met deux identations avant les arguments (après la parenthèse
ouvrante), ce qui correspond si je ne m'abuse au défaut de cinoptions
(2s. Il ramène aussi la parenthèse fermante alignée sous la parenthèse
ouvrante, ce qui doit être, si j'ai bien compris la doc, m0. Bon.

Maintenant, je positionne mon curseur sur la parenthèse fermante de la
dernière ligne (en mode insertion) et je fais ctrl-f. Et là, je vois
le résultat suivant :

f(
a, // deux tabs
b // deux tabs
); // deux tabs !!

Si je remets mon curseur au début de la ligne -- ou en fait, n'importe
où sauf exactement sur sur la parenthèse -- ctrl-f me re-génère
l'indentation initiale (cad la parenthèse alignée avec celle
ouvrante).

Je n'arrive pas à comprendre pourquoi le comportement de ctrl-f dépend
de la position de mon curseur sur la ligne...

Est-ce que quelqu'un à une idée ou une explication ?

Merci !
--
Rémi Moyen

Poser votre question sur le forum Logiciels

Les 3 réponses :

Le Tue, 16 Mar 2010 08:38:43 -0700 (PDT), Rémi Moyen a écrit :


f(
a, // deux tabs
b // deux tabs
); // deux tabs !!



Je n'arrive pas à comprendre pourquoi le comportement de ctrl-f dépend
de la position de mon curseur sur la ligne...



Est-ce que quelqu'un à une idée ou une explication ?


Je ne connaissais pas ctrl-f, je n'utilise que =

Je reproduis ce comportement en 7.2.405 d'aujourd'hui. À mon avis, c'est
un bogue : i-CTRL-F et == devraient faire la même chose : réindenter la
ligne courante.
--
Patrick Texier

vim:syntax=mail:ai:ts=4:et:tw=72

On Mar 23, 2:54 pm, Patrick Texier <p.tex...@alussinan.org> a écrit :


Je ne connaissais pas ctrl-f, je n'utilise que =


Ben alors on est deux à avoir appris quelque chose ! Je ne connaissais
pas =, merci.

= marche bien comme je m'y attends (sans le problème de ctrl-f), mais
j'avoue que, en plus du fait que je n'y suis pas habitué, j'aime moins
parce qu'il faut plus de frappes depuis le mode insert (là où je ré-
indente, en général) : Esc, puis ==, puis i, contre ctrl et f
uniquement.


Je reproduis ce comportement en 7.2.405 d'aujourd'hui. À mon avis, c'est
un bogue : i-CTRL-F et == devraient faire la même chose : réindenter la
ligne courante.


OK. J'ai fait une recherche rapide sur le site de vim, je ne vois pas
quelle est la méthode officielle pour indiquer des bugs (je n'ai pas
vu de base de bugs où je pourrais voir si je suis le premier à trouver
ça, non plus). Tu sais comment faire ?
--
Rémi Moyen

Le Wed, 24 Mar 2010 02:39:34 -0700 (PDT), Rémi Moyen a écrit :


= marche bien comme je m'y attends (sans le problème de ctrl-f), mais
j'avoue que, en plus du fait que je n'y suis pas habitué, j'aime moins
parce qu'il faut plus de frappes depuis le mode insert (là où je ré-
indente, en général) : Esc, puis ==, puis i, contre ctrl et f
uniquement.


Parce que je réindente souvent des blocs voire des programmes complets.
Avec LifeLines (comme du c sans, ils indentent souvent comme des
cochons.


Je reproduis ce comportement en 7.2.405 d'aujourd'hui. À mon avis, c'est
un bogue : i-CTRL-F et == devraient faire la même chose : réindenter la
ligne courante.



OK. J'ai fait une recherche rapide sur le site de vim, je ne vois pas
quelle est la méthode officielle pour indiquer des bugs (je n'ai pas
vu de base de bugs où je pourrais voir si je suis le premier à trouver
ça, non plus). Tu sais comment faire ?


Voir :help bugs. L'adresse de courriel de Bram pour les rapports de
bogues est bugs.vim.org

Pour la liste de bogues courantes, c'est le fichier d'aide :help todo.
Pour avoir une version à jour, il faut le télécharger sur ftp.vim.org
dans le répertoire /pub/editors/vim/runtime/doc/

Il est conseillé d'avoir un Vim à jour (la 7.2 a maintenant plus de
400 patches). On trouve les patches par ftp dans
/pub/editors/vim/patches/7.2/. Le fichier README.txt contient la
description très succinte de tous.

Sinon, pour être sur que le bogue existe encore dans la version
courante, il suffit de publier la procédure de reproduction ici.
--
Patrick Texier

vim:syntax=mail:ai:ts=4:et:tw=72

Poser votre question sur le forum Logiciels

Questions similaires :

[Vim] Oublier la position dans un fichier déjà édité

Le 02/02/2017 18:52, je répondais à pfercour : et : Bingo ! La solution est ici : autocmd BufReadPost COMMIT_EDITMSG \ exe "normal! gg" Et j'ai donc mis dans mon .vimrc : autocmd...