Comment faire pour que ctrl + c annule une commande entière lors de l’interaction avec une commande de sous-shell?

J’ai un simple alias de shell

alias fz='vim -p $(fzf -m)' 

fzf est un programme terminal interactif qui, lorsqu’il se termine, envoie une liste de noms de fichiers sur stdout. Ceci est ensuite utilisé pour ouvrir les fichiers choisis avec vim.

Maintenant, le problème est que lorsque je décide d’annuler et appuyez sur Ctrl + C, le shell va de l’avant et ouvre toujours vim (comme si je venais de vim -p ). Cela a du sens.

Maintenant, une solution au problème immédiat que j’ai est de rendre mon alias plus sophistiqué pour qu’il ne lance pas vim si la sortie de fzf est vide. Sinon, je pourrais probablement faire quelque chose pour interrompre le lancement de vim si le code de sortie de fzf n’est pas zéro.

Cependant, je suis curieux de savoir comment je pourrais utiliser mon shell pour terminer ce fz quand je ctrl + c. Est-ce simplement impossible quand je suis dans le contexte de sous-shell? Serais-je capable de le faire en définissant l’ID du groupe de processus d’une manière ou d’une autre?

J’ai essayé set -m , mais cela n’a pas changé le comportement.