Forum Astuces.divers [Éditeur/Emacs] Incrément

Posté par  (site web personnel) .
Étiquettes : aucune
0
3
avr.
2002
Voici une fonction et une macro pour emacs qui permmettent d'incrémenter un nombre automatiquement :

;; Incrémente et copie
(defun add-number (arg)
"Add arg to number under cursor. If no arg, add 1."
(interactive "p")
(insert (format " %d" (+ (read (current-buffer)) arg)))
(backward-word 1))
(global-set-key "C-cC-i" 'add-number)

;; Incrémente sur place
(fset 'inc
[?C-c ?C-i ?C- C-left ?C-w])
(global-set-key "C-ci" 'inc)
  • # avec vim :

    Posté par  . Évalué à 1.

    ctrl-a incremente
    ctrl-x decrement
    • [^] # Re: avec vim :

      Posté par  (site web personnel) . Évalué à 1.

      à propos de Vim:

      Les commandes Ctrl-A et Ctrl-X (en mode normal) fonctionnent avec des nombres décimaux, hexadécimaux, octaux, et également avec les lettres de l'alphabet.

      L'option nrformats (nf en abrégé) sert à indiquer à Vim quelles bases il doit reconnaître et lesquelles il doit ignorer. Par défaut, elle vaut octal,hex (décimal est toujours actif) ce qui est un peu irritant quant on veut incrémenter un nombre tel que 07 (qui devient 010, vive l'octal).

      Bref, si ça vous énerve autant que moi, un petit "set nf=hex" dans votre fichier .vimrc devrait corriger le problême.

      Bien sûr, :help 'nf' :help ctrl-a et :help ctrl-x pour plus d'informations.
  • # Numérotation automatique d'une playlist

    Posté par  (site web personnel) . Évalué à 1.

    Pour en rajouter une couche, vous pouvez definir la macro qui permet d'aller à la ligne, incrémenter le nombre et rajouter les espaces/zero automatiquement :
    (fset 'copy-to-nextline-and-inc
          [?\C-  C-right ?\M-w down home ?\C-y ?  home ?\C-c ?i ?0])
    (global-set-key (read-kbd-macro "C-c C-M-i") 'copy-to-nextline-and-inc)
    
    Vous partez avec la liste :
    01 - toto
    - plop
    - plouf plip
    - foo bar
    
    vous placez le curseur sur le 01 et un simple C-u 3 C-c C-M-i et plaf, voici la liste automatiquement numérotée :
    01 - toto
    02 - plop
    03 - plouf plip
    04 - foo bar
    
    PS: chez moi, la macro inc serait plutôt :
    (fset 'inc
          [?\C-c ?\C-i C-backspace])
    
    PPS: après avoir enregistré la macro avec C-x ( et C-x ), le code est obtenu avec la fonction insert-kbd-macro.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.