Comment abandonner fc sans exécuter la commande?

13

La commande fc permettra l'édition visuelle de la commande précédente. Si je change d'avis dans l'éditeur, comment puis-je empêcher l'exécution de la commande. Dans vim, en tapant q! ou q les deux entraînent l'exécution de la commande et CTRL-C ne fonctionne pas non plus. Est la seule option pour supprimer la commande dans l'éditeur puis wq?

décuser
la source

Réponses:

17

À partir de vi, vous pouvez taper :cqpour quitter sans enregistrer et avec un code retour différent de zéro. Dans ce cas, la commande ne sera pas répétée.

Alternativement, vous pouvez généralement suspendre l'éditeur avec ctrl-zlequel vous revenez au shell sans refaire la commande. Vous devez toujours fgredémarrer l'éditeur, mais le fichier tmp ne sera plus là, vous pouvez donc quitter l'éditeur en toute sécurité. Ou vous pouvez kill -9 %cet éditeur suspendu.

Je suis d'accord, cela pourrait être plus facile. Bien sûr, vous pouvez toujours éditer des lignes dans bash en utilisant les commandes vi ou emacs.

meuh
la source
vi n'a pas de commande ": cq". Vous avez aimé taper ": q!"?
schily
@schily désolé, par vi je supposais vim. Vous pouvez lire sur vim cqdans quickfix .
meuh
Malheureusement, vim n'est pas compatible POSIX (en plus des améliorations, il y a des écarts). Pour une aide générique, c'est généralement une bonne idée de ne pas dépendre des améliorations locales ou propres au fournisseur. BTW:: q! est suffisant car un POSIX vi va sortir! = 0 dans ce cas.
schily
@schily Selon Vim installé, il est probablement sûr dans la plupart des cas, et dans ce cas, le demandeur a spécifiquement dit que q!cela ne fonctionnait pas pour eux
Michael Mrozek
2
C'est parce qu'il n'y a pas eu d'erreur et donc le code de sortie est 0. Dans vi, cela fonctionne pour taper: c (entraîne un message de commande illégal), puis taper: q! et l'erreur mémorisée se traduit par un code de sortie! = 0. Cela ne fonctionne cependant pas dans vim. Mon hypothèse précédente que: q! entraîne toujours un code de sortie! = 0 était incorrect.
schily
3

Peut-être, un moyen plus simple de se souvenir est de supprimer la commande (dd devrait faire) et de quitter ( ZZou toute autre façon de quitter avec sauvegarde devrait faire). À mon humble avis, :cqest assez mystérieux.

Andrzej Wąsowski
la source