Bagaimana cara saya membatalkan fc tanpa menjalankan perintah?

13

Perintah fc akan memungkinkan pengeditan visual dari perintah sebelumnya. Jika saya berubah pikiran di editor, bagaimana cara menghentikan perintah agar tidak dieksekusi. Di vim, mengetik q! atau q keduanya menghasilkan perintah yang dieksekusi dan CTRL-C tidak berfungsi baik. Apakah satu-satunya pilihan untuk menghapus perintah di editor dan kemudian wq?

decuser
sumber

Jawaban:

17

Dari vi Anda dapat mengetik :cquntuk keluar tanpa menyimpan dan dengan kode pengembalian yang tidak nol. Dalam hal ini perintah tidak akan diulang.

Atau, Anda biasanya dapat menangguhkan editor ctrl-zyang membuat Anda kembali ke shell tanpa mengulangi perintah. Anda masih harus fgme-restart editor, tetapi file tmp tidak akan ada lagi, sehingga Anda dapat keluar dari editor dengan aman. Atau Anda dapat kill -9 %editor yang ditangguhkan ini.

Saya setuju, itu bisa lebih mudah. Tentu saja, Anda selalu dapat mengedit baris dalam bash menggunakan perintah vi atau emacs.

meuh
sumber
vi tidak memiliki perintah ": cq". Apakah Anda suka mengetik ": q!"?
schily
@ maaf, oleh vi saya mengasumsikan vim. Anda dapat membaca tentang vim cqdalam perbaikan cepat .
meuh
Sayangnya, vim tidak kompatibel dengan POSIX (selain perangkat tambahan ada penyimpangan). Untuk bantuan umum, biasanya merupakan ide bagus untuk tidak bergantung pada peningkatan unik lokal atau vendor. BTW:: q! cukup karena POSIX vi akan keluar! = 0 dalam hal ini.
schily
@ mungkin Tergantung pada vim yang diinstal mungkin aman dalam banyak kasus, dan dalam kasus ini penanya secara khusus mengatakan q!tidak bekerja untuk mereka
Michael Mrozek
2
Ini karena tidak ada kesalahan dan dengan demikian kode keluarnya adalah 0. In vi berfungsi untuk mengetik: c (menghasilkan pesan perintah ilegal) dan kemudian mengetik: q! dan kesalahan yang diingat menghasilkan kode keluar! = 0. Namun ini tidak bekerja di vim. Asumsi saya sebelumnya bahwa: q! selalu menghasilkan kode keluar! = 0 salah.
schily
3

Mungkin, cara yang lebih mudah untuk diingat adalah dengan menghapus perintah (harus dilakukan) dan berhenti ( ZZatau cara lain untuk berhenti dengan menyimpan harus dilakukan). IMHO, :cqcukup misterius.

Andrzej Wąsowski
sumber