Bonjour,
J'aimerais bien trouver le moyen dans vim d'executer un script shell externe avec comme paramètre le mot courant.
Mon but précis est, à l'intérieur d'un vimdiff de 2 listes de paquets de 2 machines, de pouvoir faire un "aptitude show $1" (en fait mon script montrerait la description du paquet sous le curseur et demanderait si il faut l'installer avant de revenir à vim).
Je n'ai rien trouvé de probant sur le ternet :-(
Merci.
# Macro + filtre
Posté par cho7 (site web personnel) . Évalué à 2.
Hello,
tu peux très facilement faire une macro qui va :
1/ copier le mot courant dans un registre (par exemple "1yiw pour copier le mot courrant (yank inner word) dans le registre 1)
2/ execute une commande en lui passant le contenu du registre 1 avec :!apt-cache show 1 puis entrée (ctrl+r dump le contenu du registre spécifié juste après)
Testé à l'instant avec un helloworld en python :+)
[^] # Re: Macro + filtre
Posté par cho7 (site web personnel) . Évalué à 2.
Ah, et si tu n'a jamais fais de macro, c'est très simple, il suffit de partir en mode commande (echap), de tapper q suivi de la lettre à laquelle tu affectes ta macro. Ca marque "Enregistrement" ce qui veut dire que désormais tout ce que tu fais sera enregistré. Quand t'as terminé, echap suivi de q met fin à l'enregistrement.
Pour appeler la macro affectée à la touche a, il suffit de faire @a (en mode commande). Si tu veux l'appliquer plusieurs fois de suite, tu peux ensuite utiliser @@ qui rappelle la dernière macro utilisée.
Pour ton truc, ca revient donc à faire :
1/ tu te positionne sur ton mot en mode commande (echap)
2/ qa"1yiw:apt-cache show 1 [entrée]
3/ quand t'es revenu sous vim, presse q pour sauver la macro.
Voila !
[^] # Re: Macro + filtre
Posté par cho7 (site web personnel) . Évalué à 2.
(j'ai oublié le ! juste devant le apt-cache, désolé)
2/ qa"1yiw:!apt-cache show 1 [entrée]
[^] # Re: Macro + filtre
Posté par cho7 (site web personnel) . Évalué à 3.
bon, et ce RoR m'a bouffé ma balise, il faut pas oublié le ctrl+r avant le 1 :
2/ qa"1yiw:!apt-cache show [ctrl+r]1 [entrée]
[^] # Re: Macro + filtre
Posté par zx81 . Évalué à 2.
Je n'ai pas réussi à rajouter la macro dans mon vimrc (vim ne ne lançait plus et revenait au prompt sans aucun message) donc j'ai associé la commande à la touche [F1] avec:
map #1 "1yiw:!aptitude show ^R1^M
Ca marche parfaitement. Merci !
# ca m'a l'air compliqué comme fonctionnement
Posté par NeoX . Évalué à 3.
s'il faut se farcir la liste de 50 paquets à la main pour proposer de les installer, tu n'as pas fini
alors ma solution (evidemment ca marche avec les distribs à base de .deb, on doit pouvoir faire la meme chose sur les distributions en .rpm avec les outils qui vont bien)
soit 2 fichiers A.txt et B.txt contenant un
dpkg --get-selections
des machines A et B
soit diff.txt le resultat du diff A.txt B.txt
un simple
dpkg --set-selections <diff.txt
devrait suffire à faire installer/proposer d'installer ce qu'il manque
[^] # Re: ca m'a l'air compliqué comme fonctionnement
Posté par zx81 . Évalué à 2.
oui, bien sur, je connais, mais je voulais être beaucoup plus sélectif et en profiter pour faire du ménage (les passages etch/lenny/squeeze laissent quand même pas mal de vieux trucs même si on peux les virer d'un coup avec aptitude purge ~o !)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.