¿Cómo aborto fc sin ejecutar el comando?

13

El comando fc permitirá la edición visual del comando anterior. Si cambio de opinión en el editor, ¿cómo evito que se ejecute el comando? En vim, escribiendo q! o q ambos dan como resultado la ejecución del comando y CTRL-C tampoco funciona. ¿Es la única opción para eliminar el comando en el editor y luego wq?

descusador
fuente

Respuestas:

17

Desde vi puede escribir :cqpara salir sin guardar y con un código de retorno distinto de cero. En este caso, el comando no se repetirá.

Alternativamente, generalmente puede suspender el editor con el ctrl-zque regresa al shell sin rehacer el comando. Todavía tiene que fgreiniciar el editor, pero el archivo tmp ya no estará disponible, por lo que puede salir del editor de forma segura. O puedes kill -9 %este editor suspendido.

Estoy de acuerdo, podría ser más fácil. Por supuesto, siempre puede editar líneas dentro de bash usando los comandos vi o emacs.

meuh
fuente
vi no tiene un comando ": cq". ¿Te ha gustado escribir ": q!"?
schily
@Schily lo siento, por vi estaba asumiendo vim. Puedes leer sobre vim cqen quickfix .
meuh
Desafortunadamente, vim no es compatible con POSIX (además de las mejoras hay desviaciones). Para una ayuda genérica, generalmente es una buena idea no depender de mejoras locales o exclusivas del proveedor. Por cierto: q! es suficiente ya que un POSIX vi saldrá! = 0 en este caso.
schily
@schily Dependiendo de la instalación de vim, es probable que sea seguro en la mayoría de los casos, y en este caso el autor de la pregunta dijo específicamente q!que no funcionaba para ellos
Michael Mrozek
2
Esto se debe a que no hubo ningún error y, por lo tanto, el código de salida es 0. En vi funciona para escribir: c (da como resultado un mensaje de comando ilegal) y luego escribir: q! y el error recordado da como resultado un código de salida! = 0. Sin embargo, esto no funciona en vim. Mi suposición anterior de que: q! siempre da como resultado un código de salida! = 0 fue incorrecto.
schily
3

Quizás, una forma más fácil de recordar es eliminar el comando (dd debería hacer) y salir ( ZZo cualquier otra forma de salir con el guardado debería hacerlo). En mi humilde opinión, :cqes bastante arcano.

Andrzej Wąsowski
fuente