Bash: hapus dari kursor hingga akhir baris dengan pintasan keyboard

91

Pertimbangkan bash prompt berikut, di mana ^menunjukkan lokasi prompt:

$ git commit -am "[bug 123456] Do this and that with the bug"
                               ^

Misalkan saya ingin mengkomit kembali ke bug yang sama, dengan pesan komit yang berbeda. Apakah ada cara untuk menghapus teks dari posisi kursor hingga akhir baris?

Adam Matan
sumber

Jawaban:

145

Gunakan Ctrl+ Kuntuk menghapus dari kursor ke akhir baris.

Gunakan Ctrl+ Uuntuk menghapus dari kursor ke awal baris.

pengguna128285
sumber
Apa kombinasi kunci untuk diletakkan?
ShooShoSha
@ShooShoSha, Coba Shift + Sisipkan
user128285
apa arti dari K dan U, saya tidak bisa mengingat minggu depan ini jika saya tidak tahu artinya, bagaimana cara mengingatnya?
workplaylifecycle
2
@hylepo Entahlah tapi mnemonik saya Brexit - the UK leaves Europe- U menghapus ke awal dan K ke akhir.
Snowcrash
47

Itu tergantung pada apakah Anda menggunakan mode edit vi ( set -o vi) atau emacs ( set -o emacs) di dalam shell Anda.

Secara default, shell Anda umumnya default ke mode pengeditan emacs.

  • Dalam mode emacs, menghapus sampai akhir baris dapat dilakukan dengan menggunakan perintah ctrl- k.

  • Namun, jika Anda menggunakan mode edit vi di shell perintah Anda, hasil yang sama dapat dicapai dengan mengetik Esc(yang akan menempatkan Anda dalam mode perintah) diikuti oleh d- $(jika Anda ingin menghapus seluruh baris, masukkan dd).

Jika Anda tidak yakin tentang mode pengeditan mana yang saat ini Anda gunakan di shell Anda, masukkan perintah set -odari baris perintah dan Anda akan dapat menentukan mode pengeditan yang sedang Anda gunakan:

set -o
...snip...
emacs           on
...snip...
vi              off

Untuk mengganti mode pengeditan baris perintah, cukup ketik:

set -o vi

atau

set -o emacs
Kevin Bowen
sumber
4
Jika Anda menginginkan mnemonik, Kkependekan dari kill (garis yang dimulai dari posisi kursor).
Gregor Botero
5
Dalam mode perintah vi, Dberfungsi sama dengand$
glenn jackman
3
+1 untuk benar-benar menuliskan jawaban yang benar dan menjelaskan bahwa shellop dapat mengubahnya.
TC1
1
>> Terima kasih. Tampaknya saya menggunakan vi, jadi CTRL + K melakukan trik. - Adam Matan Adam, lalu itu emacs-mode Anda berada, bukan vi.
tangkap
1
Di Kubuntu oneiric (konsole), Ctrl + K dan ESC Shift + D keduanya berfungsi. ESC d menghapus beberapa baris (mungkin hingga ';'). (Mengetik $ setelah itu hanya mengirim $ ke konsol.) Saya sudah mencoba mencari cara untuk melakukan itu untuk sementara waktu. Terima kasih!
Joe
3

Jika Anda hanya terbiasa dengan salah satu Zsh dan Bash, berikut ini adalah binding kunci setara yang Anda (mungkin) butuhkan:

pesta

bind '"\C-k"':kill-line

zsh

bindkey "\C-k"      vi-kill-eol

Informasi relevan lainnya

Untuk mendapatkan daftar binding utama:

# bash
bind -p

# zsh
bindkey
Sridhar Sarnobat
sumber
Saya bingung. Untuk Bash, bukankah seharusnya "^k" untuk Control + K?
wjandrea
Maaf, itu mengikat pribadi saya. Saya akan menempatkan binding standar tetapi tidak nyaman dengan sintaks bash. Karena Anda telah menyebutkan apa yang seharusnya saya ambil kata-kata Anda untuk itu dan mengedit posting saya.
Sridhar Sarnobat
1
Oh oke. Saya sendiri tidak terbiasa dengan itu, tetapi hanya memeriksa dan itu seharusnya"\C-k"
wjandrea