[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: tuer vim proprement (?)



Le 29/07/2014 22:34, moi-meme a écrit :

>> Et tu fais de même pour chacune des variables qui se retrouvent dans le
>> fichier vim à éditer. À partir de là, quand tu lanceras dans vim :
>>
>>     :w | !bash %
>>
>> les variables seront bien définies avec les valeurs qu'elles avaient
>> juste avant la ligne « vim <le-fichier> ».
>>
>
> Cette proposition m'intéresse.
> Jean Jachues m'a envoyé un mail me disant d'utiliser vim dan la même 
> console et de le fermer à chaque fois. Ensuite j'exécute la boucle.

Ben oui, en gros on dit un peu tous la même
chose : ouvrir vim normalement et le fermer
normalement avec « :w ».

> Je te mets le bout de script concernant la boucle. Je ne peux pas le 
> faire à partir de vim avec : ":w | !bash %"
> 
> J'édite le fichier select/$film/action.

"selection/$film/action" plutôt, d'après le
code ci-dessous.

> Mais dans la boucle je ne fais pas que l'exécuter : je réaffiche l'image

Et bien mets également la partie du code qui
affiche l'image dans le fichier que tu édites
avec vim. Ce fichier est bien généré
automatiquement par le script « global » de
toute façon, non ?

Autre possibilité : tu n'es pas obligé dans
vim de lancer le fichier courant lui-même dans
avec « : !bash % », tu peux aussi te créer un
exécutable dans /usr/local/bin/ qui s'appellerait
tester_image.sh (par exemple) et qui ferait un
truc du genre ça :

-----------------------------------------
#!/bin/bash

# Du code...

# Inclusion du fichier donné au argument
# avec la commande « point ».
. "$1"

# Encore un peu de code...
-----------------------------------------

De sorte que l'appel :

    tester_image.sh selection/film21/action

revienne à exécuter le code ci-dessus où
tu remplaces la ligne « . "$1" » par le
contenu du fichier "selection/film21/action".
Du coup, dans vim, tu pourrais faire un
truc du genre :

    :w | tester_image.sh "%"

ainsi dans, vim, tu pourrais te limiter
uniquement à la partie que tu dois modifier
manuellement (par tâtonnements).

> Je te montre la boucle pour information (toujours du rustique)
> 
> #choix de la photo
> sortie=/tmp/action.jpg
> entree=$image
> #met l'image
> feh   --geometry 600x400+10+10 $image &
> #visualise sortie
> to_do=$(cat  selection/$film/action)
> eval "$to_do"
> #visualise photo
> eog   $sortie &
> 
> #feh --geometry 100x100+0+0 $image &
> 	#traitement action
> 		echo "traitements images par action"
> 		#boucle de revisualisation
> 		while [ ! $a ] ; do 
> 			#traite fichier selection
> 			vim selection/$film/action  
> 			pkill   eog
> 			#traitement de l'image
> 			to_do=$(cat  selection/$film/action)
> 			eval "$to_do"
> 			#visualise photo
> 			eog $sortie &
> 			read a 
> 			echo $a
> 		done
> 	#arrete feh
> 	kill -SIGTERM %1 #-- -$(jobs -p)
> 	pkill eog

En voyant ça vite fait, je reste sur l'idée
que tu peux te contenter d'un simple :

    vim <le-fichier>

dans ton script global qui pourra continuer
son travail après la fermeture de vim par tes
soins via un simple « :q » (ce qui équivaudra
à une validation de ta part de l'itération N
pour passer à l'itération N+1). Une fois dans
vim, les solutions ne manquent pas en utilisant
entre autres :

- l'exportation des variables qui peuvent servir
  dans les programmes qui seront exécutés à partir
  de vim.
- la création (éventuelle) d'un exécutable dans
  /usr/local/bin/ qui sera appelé dans vim et qui
  utilisera le fichier vim justement (donné en 
  argument lors de l'appel).

Après, forcément, il y aura un peu de travail
de ta part pour modifier et réadapter le code,
sachant que ce tu as à y gagner c'est surtout
la gestion d'un seul terminal (avec quand même
aussi une fenêtre pour la visualisation du
rendu des images, mais celle-là tu ne peux pas
y couper à priori). J'ai cru comprendre que
tu avais pas mal d'itérations à te taper, à
toi de voir si ça vaut le coup de te lancer
dans une modification/restructuration de
tes scripts. Voir aussi si c'est un « one-shot »
ou si c'est un travail que tu auras à faire
à plusieurs reprise etc. etc.

Bon courage. ;)

-- 
François Lafont


Reply to: