J'ai une idée pour coder plus vite

ça existe ?

a marqué ce sujet comme résolu.

Dans mon cas perso, y'a pas photo. Je déteste lever les mains de mon clavier. À l'exception de mon browser et mon client mail, mon environnement de travail tient tout entier dans un émulateur de terminal, moyennant une combinaison judicieuse d'onglets et de screen et je navigue dedans sans jamais toucher à la souris.

Connais tu pentadactyl ?

juke

Ouais, mais du coup maintenant j'ai l'habitude d'utiliser mon browser au touchpad, avec le multitouch pour scroller, et du coup je suis bien comme ça. :)

+0 -0

Tu pourrais vouloir essayer quand même : je suis loin de tout utiliser (et d'ailleurs j'utilise très peu les features pour lesquelles je l'avais installé au départ) mais on finit par s'habituer à quelques raccourcis bien pratiques.

+1 -0

Bonjour,

Je n'arrive pas à comprendre le concept de vim dont je trouve les commandes totalement contre-intuitives. Pourquoi inventer des choses aussi abscons que d} pour supprimer du curseur jusqu'à la fin de la ligne quand Shift+End puis Del fait pareil de façon beaucoup plus simple, logique et intuitive ?

ON veut supprimer une fonction ? C'est pas beaucoup plus compliqué normalement: Ctrl+F, et si l'éditeur est bien fait, on a un raccourci du style Ctrl+Shift+Flèche bas pour sélectionner et paf, Del et adieu. ET si on ne sait pas dans quel fichier elle se trouve c'est qu'on a un problème plus général d'organisation du code à mon avis.

Il faudra un jour aussi qu'on m'explique la logique derrière les raccourcis de nano. Je ne vois pas le rapport entre Ctrl+O et enregistrer, ni Ctrl+W et rechercher, et d'autres… les pires étant Ctrl+A = Home, Ctrl+E = End, et le must, Alt+6 pour copier. A la limite je peux être en mesure de comprendre que Ctrl+C ne soit pas utilisable pour copier vu qu'en ligne de commande ce raccourci a une fonction beaucoup plus primaire et indispensable, mais là, ça m'échappe vu qu'en plu il sert à autre chose…

Vim ça doit sans doute être le seul logiciel au monde où même la fonction quitter est totalement contre-intuitive. Je ne dois sûrement pas être le seul imbécile qui a quitté vim en ouvrant une deuxième session SSH pour pouvoir le kill -9 la première fois, tellement c'est illogiqe comme concept.

Quelqu'un m'explique ? Je ne cherche pas à troll.

+1 -2

Je n'arrive pas à comprendre le concept de vim dont je trouve les commandes totalement contre-intuitives. Pourquoi inventer des choses aussi abscons que d} pour supprimer du curseur jusqu'à la fin de la ligne quand Shift+End puis Del fait pareil de façon beaucoup plus simple, logique et intuitive ?

Non, c'est d$. $ est déjà la fin de ligne avec les regex. Donc nickel, pas de surcharge du cerveau. d}, c'est jusqu'à la fin de paragraphe, et ) pour les phrases – je ne dis pas qu'il y a une logique pour le coup. Et ils utilisent quoi les autres outils pour faire ça ? Quoi? Ils n'ont rien de dédié ou d'identique partout. Fichtre.

ON veut supprimer une fonction ? C'est pas beaucoup plus compliqué normalement: Ctrl+F, et si l'éditeur est bien fait, on a un raccourci du style Ctrl+Shift+Flèche bas pour sélectionner et paf, Del et adieu. ET si on ne sait pas dans quel fichier elle se trouve c'est qu'on a un problème plus général d'organisation du code à mon avis.

Je vais utiliser les tags pour trouver la fonction, puis sélectionner du début à la fin en jouant avec % ou i%. Ceci dit, il existe des raccourcis pour aller du début à la fin d'une fonction automatiquement, mais je ne m'en sers jamais.

Vim ça doit sans doute être le seul logiciel au monde où même la fonction quitter est totalement contre-intuitive.

:quit? C'est vrai que ALT-F4, un gamin à côté de :q, est plus intuitif.

Le truc est que bien la moitié des raccourcis de vi(m) se pronnoncent, contrairement à l'essentiel des autres outils. Je veux remplacer le mot courant ? ciw -> Change Inner Word. Je veux effacer le bloc de code courant ? da{ -> Delete A {. Et le mettre ailleurs? p -> Paste. Je veux copier le paramètre courant -> yi, (par un plugin de bibi mais d'autres ont utilisé un autre caractère plutôt que , pour désigner un paramètre)

Je ne dois sûrement pas être le seul imbécile qui a quitté vim en ouvrant une deuxième session SSH pour pouvoir le kill -9 la première fois, tellement c'est illogique comme concept.

Il faut apprendre à s'en servir. Et ce que tu trouves plus intuitif, c'est juste l'habitude d'outils plus récents qui ont pris d'autres conventions – franchement pas pertinentes sur un plan mnémotechnique, undo? CTRL-Z? redo? CTRL-Y ? u et respectivement CTRL-R sont tout de même un peu plus pertinents.

Accessoirement, il y a 25-30 ans on avait encore les conventions dont les outils de Borland avaient hérité. Et quand on utilise des macs, il faut utiliser la paume/commande à la place de CTRL dans tous les logiciels sauf en ligne de commande dans le terminal. Qui a les conventions les plus intuitives ?

En fait les commandes de Vim reposent sur une logique simple et progressive : le déplacement. Si tu sais te déplacer, il te suffit d'ajouter les commandes d pour supprimer, c pour modifier, y (yank) pour copier. Donc tu apprends un déplacement, pour savoir faire au minimum 4 commandes.

Tu sais aller au début du paragraphe avec {, tu sais aller à la fin du paragraphe avec }, alors ajoute un d pour supprimer le paragraphe : {d}. Mais bon, si tu sais pas te déplacer, tu peux aussi très facilement te souvenir de "Delete A Paragraph" -> dap. Ce paragraphe tu veux le changer (i.e. passer automatiquement en mode édition au bon endroit après l'avoir viré) ? {c}, ou cap. Tu veux le copier ? {y}, ou yap.

Et c'est pareil avec tous les déplacements. Supprimer le premier mot de la ligne courante ? ^dw (parce que ^ t'envoie au début de la ligne et w te fait avancer d'un mot).

Le seul moyen de trouver ça contre-intruitif, c'est de ne jamais avoir pris une demi-heure pour apprendre en commençant par le début (vimtutor est intégré à vim).

PS : Oh, et à part d, a et y qui sont les trucs de base, on peut mentionner les trucs un peu plus youpilol comme = pour réindenter automatiquement, gq pour remettre du texte en page en respectant les longueurs de lignes… etc. Autant de commandes combinables avec la même logique de mouvement que toutes les autres.

+3 -0

Je n'arrive pas à comprendre le concept de vim dont je trouve les commandes totalement contre-intuitives. Pourquoi inventer des choses aussi abscons que d} pour supprimer du curseur jusqu'à la fin de la ligne quand Shift+End puis Del fait pareil de façon beaucoup plus simple, logique et intuitive ?

Dans vim il suffit il suffit d'appuier sur D (voir :help D) pour effacer jusqu'a la fin de la ligne. mais si tu veux avoir le mode "habituel" des editeurs, tu appuis sur v pour passer en mode visuel (:help v), là tu pourrais appuyer sur End (pas besoin de maintenir Shift) puis tu pourrais appyer sur Del (ou juste sur d)

Il faudra un jour aussi qu'on m'explique la logique derrière les raccourcis de nano. Je ne vois pas le rapport entre Ctrl+O et enregistrer, ni Ctrl+W et rechercher, et d'autres… les pires étant Ctrl+A = Home, Ctrl+E = End, et le must, Alt+6 pour copier.

Pour nano je ne saurai pas te dire, je n'aime pas cet éditeur, par contre Ctrl+A = HOME et Ctrl+E = End sont des classiques, c'est valable dans quasiment tous les softs sur les unix, dans la ligne de commande, sur les cisco, dans telnet etc.

Si tu fais beaucoup d'unix, je t'invite à apprendre quelques un des raccourcis : http://cnswww.cns.cwru.edu/php/chet/readline/rluserman.html

Comme tu peux le voir ici : http://xahlee.info/kbd/keyboard_hardware_and_key_choices.html

les claviers des machines sur lequelles ont été developpés les logiciels sont importants dans le choix des raccourci clavier, par exemple sur vi on se deplace avec hjkl car les ADM-3A n'avaient pas de touches de fleches, tu vois, meme si tu ce n'est pas forcement intuitif pour toi ce n'est pas forcement "illogique comme concept"

Vim ça doit sans doute être le seul logiciel au monde où même la fonction quitter est totalement contre-intuitive.

Pourtant quand tu lance vim la première chose qu'il te dit c'est : tapez :q<entree> pour quitter

les claviers des machines sur lequelles ont été developpés les logiciels sont importants dans le choix des raccourci clavier, par exemple sur vi on se deplace avec hjkl car les ADM-3A n'avaient pas de touches de fleches

Bizarre qu'ils n'aient pas choisi IJKL dans ce cas, par analogie à la forme du pavé fléché.

tu vois, meme si tu ce n'est pas forcement intuitif pour toi ce n'est pas forcement "illogique comme concept"

C'est vrai, j'y suis allé un peu fort peut-être / je ne me suis pas bien exprimé; j'aurais peut-être dû dire ça me paraît personnellement illogique comme concept comme "c'est de la m…" vs "j'aime pas". Mais ça va déjà un petit peu mieux avec les quelques bribes de background que vous avez postées.

Soit dit en passant je reconnais que Ctrl+Z/Y n'est pas en soi « plus intuitif ».

En fait ce que j'ai du mal à appréhender avec vim, c'est qu'il faille réfléchir pour se déplacer. Quand on se déplace avec les flèches on n'a pas besoin de réfléchir. On laisse appuyé ou on appuie jusqu'à ce qu'on arrive au bon endroit. Ca me paraît être de la charge cognitive inutile de se dire je veux changer ce bout de phrase ou de code, je dois avancer de 1, 2, 3, … 10 mots, hmmm… 10w, je veux éditer, hum…, ah, et là en bas du coup ça ne joue plus, heu… il y a … 1, 2, 3, … 12 lignes … … je voulais changer quoi déjà ? ah oui.

Cela dit, je suis tout de même convaincu qu'on va plus vite au clavier (car on évite des va-et-vient incessants), et qu'on passe une bonne partie de son temps à se déplacer, peut-être autant qu'à écrire en fait.

+0 -0

Les goûts et les couleurs… Un des principes de Vim c'est : les commandes sont des mots, avec lesquels on peut faire des phrases.

dw : delete word

Je ne sais pas ce qui est "intuitif", ça dépend certainement des affinités et des habitudes de chacun, en tout cas on ne peut pas reprocher à ce système de ne pas être mnémotechnique

Je suis encore loin de maîtriser la bête, mais aujourd'hui ce qui me paraît contre-intuitif c'est quand mon curseur ne descend pas quand je tape j dans Word :)

Pour les curieux, quelques "bibles" :

ah, et là en bas du coup ça ne joue plus, heu… il y a … 1, 2, 3, … 12 lignes … … je voulais changer quoi déjà ? ah oui.

Je ne cherche pas à te convertir ou rien, mais tu peux aussi utiliser set relativenumber pour afficher les numéros relatifs des lignes, et donc te déplacer sans avoir à compter. Pour les mots, je suis d'accord avec toi, c'est pour ça que je sélectionne généralement progressivement avec le mode visuel quand je veux supprimer, par exemple.

En fait ce que j'ai du mal à appréhender avec vim, c'est qu'il faille réfléchir pour se déplacer. Quand on se déplace avec les flèches on n'a pas besoin de réfléchir. On laisse appuyé ou on appuie jusqu'à ce qu'on arrive au bon endroit. Ca me paraît être de la charge cognitive inutile de se dire je veux changer ce bout de phrase ou de code, je dois avancer de 1, 2, 3, … 10 mots, hmmm… 10w, je veux éditer, hum…, ah, et là en bas du coup ça ne joue plus, heu… il y a … 1, 2, 3, … 12 lignes … … je voulais changer quoi déjà ? ah oui.

Je me déplace aussi avec les flèches avec vim, et sans quitter le mode insertion. Ca fait pas loin de 20 ans que je m'en sers comme ça (c'était vi au départ) et c'est pas prêt de changer. Pour les petits déplacements, c'est parfait. Pour du mot à mot, ctrl+flèche marche bien aussi. Et la souris aussi… (OK j'utilise toujours gvim quand je peux et vim quand je n'ai pas le choix)

Par contre, pour des trucs plus poussés, je n'hésite pas un seul instant à utiliser till, ou f pour aller à un caractère bien précis, % pour passer d'une parenthèse à l'autre et tous les yiw/ciw et cie (genre ya" pour copier une chaine de caractères, di[ pour effacer entre une paire d'accolades, … – choses qui en termes de charge cognitive sont bien moins encombrantes qu'une sélection avec la souris ou en appuyant de multiples fois sur les flèches). On s'embête bien moins que lorsque l'on se déplace au clavier en maintenant shift appuyé ou pas. Au pire, il y a le mode visuel qui permet de faire ces choses en pseudo-interactif.

PS: il existe le plugin easymotions qui permet de simplifier le déplacement dans un document (il rajoute des aides visuelles)

Bizarre qu'ils n'aient pas choisi IJKL dans ce cas, par analogie à la forme du pavé fléché.

aprce que les fleches étaient imprimées sur ces touches : https://en.wikipedia.org/wiki/ADM-3A#/media/File:KB_Terminal_ADM3A.svg

la "normalisation" des disposition clavier est super recente.

En fait ce que j'ai du mal à appréhender avec vim, c'est qu'il faille réfléchir pour se déplacer. Quand on se déplace avec les flèches on n'a pas besoin de réfléchir. On laisse appuyé ou on appuie jusqu'à ce qu'on arrive au bon endroit. Ca me paraît être de la charge cognitive inutile de se dire je veux changer ce bout de phrase ou de code, je dois avancer de 1, 2, 3, … 10 mots, hmmm… 10w, je veux éditer, hum…, ah, et là en bas du coup ça ne joue plus, heu… il y a … 1, 2, 3, … 12 lignes … … je voulais changer quoi déjà ? ah oui.

mais tu peux te deplacer avec les fleches, ce n'est pas exclusif. personne je ne compte pas, par contre je me deplace avec w pour avancer d'un mot par exemple, ça va plus vite que de me deplacer avec les fleches.

l'interet de "compter" et de faire une commande c'est que par exemple quand tu appuies sur . ça repete la derniere action.

Perso je ne compte pas non plus au-delà de 2 ou 3, le mode visuel (v ou V) permet de sélectionner rapidement ce qu'on veut. Comme juke, ça ne me sert que si j'ai un truc que je m'attends à devoir répéter un grand nombre de fois sur plusieurs fichiers : j'enregistre la commande dans un registre, et à ce moment là si y'a besoin de compter pour faire un truc je compte, mais c'est tout.

Cela dit je me déplace aussi beaucoup avec les flèches et les touches page up/page down parce qu'elles ont le mérite de se trouver à des positions très intuitives par rapport à mon pavé fléché sur mon laptop.

En fait pour me déplacer dans un code, j'utilise aussi énormément la recherche avec /, (ou je me positionne sur un mot et j'appuie sur * pour le rechercher automatiquement), et je me déplace d'occurrence en occurrence avec n et N. Du coup si le mot recherché est class ou def, ça permet de bouger assez vite dans un code Python… Et c'est un assez bon palliatif aux tags pour atteindre rapidement la définition d'une fonction en Python : /def ma_fonction, ou un titre en markdown : /# titre.

Et comme la recherche donne deux commandes déplacements supplémentaires (n pour la prochaine occurrence, N pour la précédente), ça m'arrive aussi de faire des trucs genre dn pour supprimer une fonction ou une classe…

Pour le code, le folding aide beaucoup aussi.

+1 -0

j'enregistre la commande dans un registre

Comment fais tu ça ?

juke

Avec q.

Concrètement :

  • qz pour dire "je commence l'enregistrement dans le registre z" (on peut utiliser n'importe quelle lettre). La mention recording apparait en bas à gauche.
  • … je fais les actions que je désire enregistrer …
  • q pour quitter l'enregistrement.

Puis pour répéter l'opération que j'ai enregistrée dans z : @z. Et si je veux répéter plusieurs fois la dernière action que j'ai appelée, @@.

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte