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


13

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

Ответы:


16

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

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

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


В 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довольно загадочно.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.