Bash readline menghapus sampai slash sebelumnya


15

Dalam mode bash emacs, apakah ada cara menghapus sampai karakter slash sebelumnya? Sebagai contoh jika saya memasukkan perintah cp /usr/local/bin/reallylongincorrectfolder /home/myname/reallylong_and_correct_pathdan ingin menghapus saja. reallylongincorrectfolderApakah ada jalan pintas? Ini adalah skenario yang sangat comman bagi saya di bash. Sesuatu seperti dF<char>di vi?

Jawaban:


9
bind -P |grep unix-filename-rubout

Untuk menguji ikatan kunci dengan mis. Ctrl- b:

bind \\C-b:unix-filename-rubout

Untuk penggunaan permanen, tambahkan ke ~/.inputrc


2
Untuk menambahkannya ke ~/.inputrc, menambahkan baris seperti ini ke file yang: "\C-b": unix-filename-rubout. Untuk melihat efeknya, Anda harus memulai shell bash baru (atau menjalankan beberapa program lain yang menggunakan pustaka readline GNU).
Croad Langshan

11

Alt- Backspacedan Ctrl- wumumnya dipetakan ke backward-kill-word, yang melakukan itu. Jika Anda ingin mengetahui apa yang dipetakan pada sistem Anda (jika ada), jalankan bind -P | grep '^backward-kill-word'.

Seperti yang dijelaskan oleh @Barmar , ini berbeda dari unix-word-rubout, yang menghilangkan batas ruang sebelumnya.


Tapi itu akan membunuh seluruh kata .. Saya ingin membunuh hanya sampai tebasan terakhir
woodstok

Itu menghapus hanya untuk tebasan terakhir di sini. Slash adalah salah satu pemisah kata default. Apakah Anda yakin menggunakan Bash?
l0b0

Buruk saya .. Alt-Backspace tidak menghapusnya sampai garis miring terakhir. Apa perbedaan antara ALt-BackSpace dan Ctrl-W?
woodstok

3
Ctl-w biasanya terikat ke unix-word-rubout: Bunuh kata di belakang titik, menggunakan spasi putih sebagai batas kata.
Barmar

2
Ini tidak bekerja. "Kata-kata terdiri dari karakter alfanumerik (huruf dan angka)". Karenanya itu akan berhenti pada lebih dari sekedar tebasan. Default-unbound unix-filename-ruboutsedikit lebih baik, karena itu akan berhenti di white space dan slash.
Sparhawk

6

Masukkan ini di Anda .inputrcdan mulai shell baru:

C-b:unix-filename-rubout

Ctrl- bsekarang menghapus mundur ke tebasan berikutnya.

Nirvana!

Jangan lupa Ctrl- XCtrl- Eakan meluncurkan editor Anda sehingga Anda dapat mengedit baris perintah yang rumit dengan nyaman.

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.