Pintasan "delete word" shell menghapus terlalu banyak karakter

9

Di bawah Bash beberapa perilaku Alt+ dtelah membuatku gila sejak bertahun-tahun dan aku tahu bahwa mungkin + itu bisa diperbaiki dengan pengaturan.

Jika saya di terminal dan mengeluarkan perintah seperti ini:

...$   cat >> ~/notesSuperLongFilename.txt

dan kemudian jika saya ingin, katakanlah, untuk menerbitkan:

...$ scp ~/notesSuperLongFilename.txt

Saya ingin mengembalikan "cat >> ~ / notesSuperLongFilename.txt" menggunakan Ctrl + p (baris sebelumnya) dan kemudian lakukan Ctrl+ alalu Alt+ ddan Alt+ dlagi jadi saya harus:

...$  ~/notesSuperLongFilename.txt

dan kemudian saya bisa cukup memasukkan "scp" dan kemudian melakukan Ctrl+ m(atau tekan Enter / Kembali).

Namun itu tidak berhasil karena setelah Alt+ pertama dsaya dapatkan:

...$ >> ~/notesSuperLongFilename.txt

(sejauh ini bagus)

tapi setelah Alt+ kedua dsaya mendapatkan:

...$ .txt

Jadi untuk beberapa alasan Alt+ dmenghapus ">> ~ / notesSuperLongFilename" sekaligus bukan hanya menghapus ">>" .

Ini harus menjadi pembuang waktu terbesar yang membuat saya gila dengan Linux / Bash sejak beberapa tahun yang lalu.

Jadi bagaimana saya bisa memperbaiki perilaku Alt+ (yang bisa dibilang rusak) ini d?

PS: Saya tidak tahu siapa yang "bertanggung jawab" atas perilaku Alt+ itu d: Saya tidak tahu apakah itu terminal atau apakah itu shell (Bash dalam kasus saya).

Cedric Martin
sumber
setelah "cat >> ~ / notesSuperLongFilename.txt", ketik "scp" dan kemudian Esc ,. (Melarikan diri satu kali dan kemudian "." Karakter satu kali)
Mathieu

Jawaban:

3

Saya tidak tahu siapa yang "bertanggung jawab" untuk perilaku Alt + d itu: Saya tidak tahu apakah itu terminal atau apakah itu shell (Bash dalam kasus saya).

Ini bash, khususnya pengaturan pengeditan baris perintah default. Ini adalah halaman yang bagus tentang perintah apa yang bisa dijilid, dan cara mengubah binding standar.

Ikatan default untuk Alt-dadalah kill-wordyang seharusnya berfungsi seperti perintah dengan nama yang sama di Emacs. Namun, seperti yang telah Anda amati, itu tidak — Emacs akan menganggap ruang antara >>dan tilde dalam contoh Anda sebagai kata istirahat. Itu bashtidak, saya akan mempertimbangkan bug. Kurang mendapatkan sumber untuk bash, mengubahnya, dan mengkompilasi ulang, saya tidak tahu apa yang dapat Anda lakukan.

dodgethesteamroller
sumber
1
Tampaknya ini adalah bug. Saya akan melaporkannya ke tim Bash.
Ernie