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?

Jawaban:


145

Gunakan Ctrl+ Kuntuk menghapus dari kursor ke akhir baris.

Gunakan Ctrl+ Uuntuk menghapus dari kursor ke awal baris.


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

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.