Как мне прервать fc без выполнения команды?

13

Команда fc позволит визуально редактировать предыдущую команду. Если я передумал в редакторе, как мне остановить выполнение команды? В vim набираешь q! или q оба приводят к выполнению команды и CTRL-C тоже не работает. Это единственный вариант, чтобы удалить команду в редакторе, а затем wq?

decuser
источник

Ответы:

16

Из vi вы можете напечатать, :cqчтобы выйти без сохранения и с ненулевым кодом возврата. В этом случае команда не будет повторяться.

В качестве альтернативы, вы обычно можете приостановить работу редактора, ctrl-zкоторый возвращает вас в оболочку без повторного выполнения команды. Вам все еще нужно fgперезапустить редактор, но файл tmp больше не будет, так что вы можете безопасно выйти из редактора. Или вы можете kill -9 %этот приостановленный редактор.

Я согласен, это может быть проще. Конечно, вы всегда можете редактировать строки в bash, используя команды vi или emacs.

meuh
источник
В vi нет команды ": cq". Вам понравилось печатать ": q!"?
Щили
@ прости, извини, я думал, что vim. Вы можете прочитать о VIMcq в QuickFix .
meuh
К сожалению, vim не совместим с POSIX (кроме улучшений есть и отклонения). Для общей справки, как правило, лучше не зависеть от локальных или уникальных улучшений поставщика. Кстати: q! достаточно, так как POSIX vi выйдет! = 0 в этом случае.
Щили
@schily Зависит от того, что установленный vim в большинстве случаев, вероятно, безопасен, и в этом случае специально заданный вопрос сказал, q!что у них не работает
Майкл Мрозек
2
Это связано с тем, что ошибки не было, поэтому код выхода равен 0. В vi он работает так: c (приводит к недопустимому сообщению команды), а затем набирает: q! и запомненная ошибка приводит к коду выхода! = 0. Это, однако, не работает в vim. Мое предыдущее предположение, что: q! всегда приводит к коду выхода! = 0 было неправильно.
Щили
3

Возможно, более простой способ запомнить - удалить команду (должна выполнить dd) и выйти ( ZZили любой другой способ выйти с сохранением должен). ИМХО, :cqдовольно загадочно.

Анджей Весовски
источник