Як перервати fc без виконання команди?


13

Команда fc дозволить візуально редагувати попередню команду. Якщо я передумав у редакторі, як зупинити виконання команди. In vim, набравши q! або q обидва результати призводять до того, що команда виконується, і CTRL-C також не працює. Єдина можливість видалити команду в редакторі, а потім wq?

Відповіді:


17

З vi можна ввести :cqвихід, не зберігаючи і з ненульовим кодом повернення. У цьому випадку команда не повториться.

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

Я згоден, це може бути простіше. Звичайно, ви завжди можете редагувати рядки в bash за допомогою команд vi або emacs.


vi не має команди ": cq". Вам подобалося ввести ": q!"?
schily

@schily вибачте, від vi я припускав vim. Ви можете прочитати про Vim cqв QuickFix .
meuh

На жаль, vim не сумісний з POSIX (окрім покращень, є відхилення). Для загальної допомоги, як правило, не рекомендується залежати від унікальних удосконалень місцевих або постачальників. До речі:: q! достатньо, оскільки POSIX vi вийде! = 0 в цьому випадку.
schily

@schily Залежно від встановлення vim, це, мабуть, безпечно у більшості випадків, і в цьому випадку запитувач спеціально сказав, q!що не працює для них
Michael Mrozek

2
Це тому, що помилки не було, і, таким чином, код виходу дорівнює 0. In vi працює з типом: c (призводить до незаконного повідомлення команди), а потім вводить: q! і запам'ятована помилка призводить до виходу коду! = 0. Це, однак, не працює в vim. Моє попереднє припущення, що: q! завжди призводить до виходу коду! = 0 було неправильним.
schily

3

Можливо, простішим способом запам’ятати є видалення команди (dd повинно зробити) та виходу ( ZZабо будь-який інший спосіб виходу із збереження повинен зробити). ІМХО, :cqдосить таємничий.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.