Bagaimana cara menghapus / menghapus saluran saat ini di terminal?

795

Jika saya menggunakan terminal dan mengetikkan baris teks untuk suatu perintah, apakah ada hotkey atau cara apa pun untuk menghapus / menghapus baris itu?

Misalnya, jika baris / perintah saya saat ini adalah sesuatu yang sangat panjang seperti:

> git log --graph --all --blah..uh oh i want to cancel and clear this line <cursor is here now>

Apakah ada hotkey atau perintah untuk pergi dari atas ke:

>

?

Biasanya saya akan menekan tombol, dan jika baris saya saat ini adalah yang baru pada sejarah, itu akan menghapusnya. Tetapi jika saya akan melalui histori perintah saya melalui tombol dan mulai mengedit atau menggunakan perintah-perintah itu, hanya akan mengubah prompt ke perintah terbaru berikutnya dalam sejarah, jadi itu tidak berfungsi di sini kecuali saya menekan beberapa kali.

tiga serangkai
sumber
6
Pintasan untuk Bergerak Lebih Cepat di Bash Command Line Halaman ini lebih ilustratif dan menjelaskan lebih baik menurut saya
Gab 是 好人

Jawaban:

1493

Anda dapat menggunakan Ctrl+ Uuntuk menghapus ke awal.

Anda dapat menggunakan Ctrl+ Wuntuk menghapus hanya satu kata.

Anda juga dapat menggunakan Ctrl+ Cuntuk membatalkan.

Jika Anda ingin menyimpan riwayatnya, Anda dapat menggunakan Alt+ Shift+ #untuk memberikan komentar.


Bash Emacs Editing Mode Cheat Sheet

kev
sumber
231
Baris yang dihapus oleh Ctrl-U juga dapat dipanggil kembali dengan Ctrl-Y.
keks
65
Apa? Sangat keren, terima kasih keks & kev, ⌃ + U menghapus semua sebelum Kursor, ⌃ + K menghapus semua setelah Kursor, ⌃ + A akan menuju ke awal baris. Jadi secara teknis ⌃ + C adalah solusi terbaik untuk Pertanyaan
Binarian
3
Alt-Shift- # tidak berfungsi? pikir yang lain lakukan. Alt-Shift- # mencetak karakter> di terminal
tgkprog
49
Terpilih untuk mengajari saya <kbd>...</kbd>tanda untuk menampilkan kunci di SO.
Samveen
11
@ LưuVĩnhPhúc ESCadalah kunci pengubah sendiri di bash. Ini digunakan untuk hal-hal seperti membatalkan navigasi riwayat ( CTRL+ r), atau menukar dua kata terakhir di belakang kursor ( ESC+ t).
noobish
578

Untuk meringkas semua jawaban:

  • Bersihkan baris: Anda dapat menggunakan Ctrl+ Uuntuk menghapus ke awal.
  • Bersihkan garis: Ctrl+ E Ctrl+ Uuntuk menghapus garis saat ini di terminal
  • Bersihkan garis: Ctrl+ A Ctrl+ Kuntuk menghapus garis saat ini di terminal
  • Batalkan perintah / baris saat ini: Ctrl+ C.
  • Ingat perintah yang dihapus: Ctrl+ Y(lalu Alt+ Y)
  • Pergi ke awal baris: Ctrl+A
  • Pergi ke akhir baris: Ctrl +E
  • Hapus kata-kata maju misalnya, jika Anda berada di tengah-tengah perintah: Ctrl +K
  • Hapus karakter di sebelah kiri, hingga awal kata: Ctrl +W
  • Untuk menghapus seluruh command prompt Anda: Ctrl +L
  • Beralih antara awal garis dan posisi kursor saat ini: Ctrl+XX
J4cK
sumber
6
note ctrl-k menghapus semuanya antara kursor dan akhir baris.
Peter Berg
6
Hapus kata berikutnya:Alt + D
cnlevy
1
Alt+ D tidak berfungsi, itu sebabnya saya belum memasukkannya :(
J4cK
1
CTRL + Lmembersihkan layar tetapi menyimpan apa yang telah diketik dalam baris perintah saat ini.
Aziraphale
1
Ctrl + Alt + >pindah ke akhir histori input yang sempurna ketika Anda ingin membatalkan pencarian histori.
astasiak
165

Saya memiliki daftar pintasan lengkap:

  1. Ctrl+a Gerakkan kursor untuk memulai baris
  2. Ctrl+e Pindahkan kursor ke ujung garis
  3. Ctrl+b Mundur satu karakter
  4. Alt+b Mundur satu kata
  5. Ctrl+ f Maju satu karakter
  6. Alt+ f Maju satu kata
  7. Ctrl+ d Hapus karakter saat ini
  8. Ctrl+ w Potong kata terakhir
  9. Ctrl+ k Potong semuanya setelah kursor
  10. Alt+ d Potong kata setelah kursor
  11. Alt+ w Potong kata sebelum kursor
  12. Ctrl+ y Rekatkan perintah yang terakhir dihapus
  13. Ctrl+ _ Membatalkan
  14. Ctrl+ u Potong semuanya sebelum kursor
  15. Ctrl+ xxBeralih antara posisi pertama dan saat ini
  16. Ctrl+ l Bersihkan terminal
  17. Ctrl+ c Batalkan perintah
  18. Ctrl+ r Perintah pencarian dalam sejarah - ketikkan istilah pencarian
  19. Ctrl+ j Akhiri pencarian pada entri riwayat saat ini
  20. Ctrl+ g Batalkan pencarian dan pulihkan baris asli
  21. Ctrl+n Perintah selanjutnya dari History
  22. Ctrl+ p perintah sebelumnya dari History
tharunkumar
sumber
5
Maaf, Tapi saya telah menyediakan semua tombol pintas yang bermanfaat, di mana 7,8,9,10,11,14,16,17 adalah kunci pintas jelas / hapus yang dapat kita gunakan sesuai kebutuhan.
tharunkumar
2
Harus disebutkan bahwa CTRL+ L(16.) menjaga konten dari baris perintah saat ini.
Aziraphale
di windows sepertinya Anda perlu menggunakan Ctrl + Shift + A untuk pergi ke awal baris
Gandalf458
3
Tidak ada Ctrl+ h: hapus karakter sebelum kursor
peflorencio
22

Ctrl+ A, Ctrl+ Kuntuk menghapus garis saat ini di terminal. Anda kemudian dapat memanggilnya dengan Ctrl+ Yjika perlu.

Spyros Mandekis
sumber
16

atau jika Anda menggunakan mode vi, tekan Escdiikuti olehcc

untuk mendapatkan kembali apa yang baru saja Anda hapus, Esclalu p:)

bluTaz
sumber
5
Anda dapat mengaktifkan mode vi dengan echo 'set editing-mode vi' >> ~/.inputrc. Juga bekerja di tempat-tempat seperti prompt interpreter python dan beberapa klien SQL
dwurf
11

Saya tidak yakin apakah Anda menyukainya tetapi saya menggunakan Ctrl+ A(untuk memulai baris) dan Ctrl+ K(untuk menghapus baris) Saya sudah terbiasa dengan perintah-perintah ini dari emacs, dan menemukan mereka secara tidak sengaja.

Muhammet Can
sumber
10

Alternatif untuk Ctrl+ A, Ctrl+ Kadalah Ctrl+ E, Ctrl+ U.

Andrey Starodubtsev
sumber
6
  • Ctrl+ u: Pindah ke awal baris Anda ke buffer cincin
  • Ctrl+ k: Bergerak hingga akhir baris Anda ke buffer cincin
  • Ctrl+ w: memindahkan karakter dan (banyak) kata yang tersisa dari kursor ke buffer cincin

  • Ctrl+ y: masukkan entri terakhir dari buffer cincin Anda dan kemudian Anda dapat menggunakan Alt+ yuntuk memutar melalui buffer cincin Anda. Tekan beberapa kali untuk melanjutkan ke entri "sebelumnya" di buffer cincin.

Cyrus
sumber
4

CTRL+ Rdan mulai mengetik untuk mencari perintah sebelumnya dalam sejarah. Akan menunjukkan garis penuh.
CTRL+ Rlagi untuk berputar.

Daniel
sumber
2

Ctrl + W akan menghapus kata di sebelah kiri.

bendangelo
sumber
2

Tambahkan ke daftar:

Dalam mode Emacs, tekan Esc, diikuti olehR , akan menghapus seluruh baris.

Saya tidak tahu mengapa, kebetulan menemukannya. Mungkin ini tidak digunakan untuk menghapus baris tetapi kebetulan memiliki efek yang sama. Jika seseorang tahu, tolong beri tahu saya, terima kasih :)

Bekerja di Bash, tetapi tidak akan bekerja di Ikan.

PickBoy
sumber
1
Ini revert-lineperintah readline: "Membatalkan semua perubahan yang dilakukan pada baris ini". Secara default, ia terikat ke M-r(Meta-R), yang bisa Alt-R atau Esc R. Ini berarti tidak benar-benar menghapus garis, hanya ketika itu kosong untuk memulai; Jika Anda gulir kembali dalam sejarah perintah Anda dan mengubah perintah, maka masalah revert-line, itu akan berubah kembali ke perintah itu semula dan tidak menghapus baris.
Benjamin W.
2

Untuk menghapus seluruh baris di mana pun kursor berada, Anda dapat menggunakan kill-whole-lineperintah, tetapi tidak terikat secara default. Ini dapat diikat ke, misalnya, Ctrl+ Alt+ Kdengan menyisipkan

"\e\C-k": kill-whole-line

ke dalam file init Readline Anda (secara konvensional ~/.inputrc).

Berbagai komentar:

  • Untuk menghindari penetapan ulang secara tidak sengaja urutan kunci yang sudah digunakan untuk hal lain, Anda dapat memeriksa semua ikatan Anda bind -P. Periksa pengikatan yang disarankan dengan

    bind -P | grep '\\e\\C-k'
  • Nama file inline Readline diambil dari variabel shell INPUTRC. Jika tidak disetel, defaultnya adalah ~/.inputrc, atau (jika itu tidak ada) /etc/inputrc. Perhatikan bahwa jika sudah ~/.inputrc, /etc/inputrcakan diabaikan.
  • Untuk memuat kembali file init Readline Anda, Anda dapat menggunakan Ctrl+ X Ctrl+ R.
  • Tautan ke bagian manual yang relevan:
Benjamin W.
sumber
2

Untuk membersihkan seluruh baris (2 cara berbeda):

  • Home, Ctrl+K
  • End, Ctrl+U
Jose1755
sumber
0

Alt+ #komentar di luar baris saat ini. Ini akan tersedia dalam sejarah jika diperlukan.

matt salmon
sumber