Pertanyaannya lurus ke depan, jangan mengeluh tentang itu. Saya hanya ingin berkomentar bahwa sering kali bernilai banyak untuk memfasilitasi ikatan standar "standar" yang sudah ada di banyak aplikasi, alih-alih menyesuaikannya tanpa keuntungan nyata dan kepastian tidak pernah melihat perilaku pada sistem asing. Ctrl+wadalah apa yang Anda harus terbiasa, imho.
Daniel Andersson
@ Daniel Andersson: atau sebagai alternatif - Anda dapat mengembangkan cara untuk mentransfer pengaturan Anda ke mesin asing.
Adobe
Berbagi dotfile adalah masalah yang sudah dipecahkan, tetapi itu tidak banyak membantu selain komputer lokal yang kurang lebih di mana Anda memiliki hak istimewa yang cukup terbuka. Jika Anda menggunakan sistem asing, kemungkinan besar Anda tidak memiliki kebebasan untuk mengkonfigurasi ulang hal-hal seperti itu (setidaknya tidak dihancurkan oleh kolega yang juga menggunakan mesin yang sama :-)). Juga, setiap aplikasi baru akan membutuhkan perawatan khusus.
Daniel Andersson
6
Saya memiliki masalah terbalik, saya terbiasa dengan Ctrl-w"hapus kata sebelumnya" di konsol, dan lakukan dengan insting bahkan di Eclipse atau Chrome yang artinya tutup tab / tutup file saat ini. Cukup mengganggu.
Ezequiel Muns
1
Saya memiliki masalah yang sama dengan Chrome SShInATab. Bagaimana saya melakukan ctrl-W tanpa ctrl-W? :)
Riccardo SCE
Jawaban:
11
Mengapa tidak menggunakan Alt+ Backspaceatau Ctrl+ Wyang sudah dipetakan di sebagian besar terminal. Tidak yakin tentang Konsol. Xmodmap (man xmodmap) dapat digunakan untuk memetakan kembali kunci khusus lainnya. (Paradoksnya, xmodmap tidak dapat memetakan kembali Spasied dengan sangat baik karena terminal menimpa pemetaan, tetapi ia bekerja dengan baik dengan sebagian besar kunci ...).
Karena saya terbiasa dengan Ctrl-Backspace di Emacs saya. Saya tahu tentang Ctrl-w. Alt-Backspace baru bagi saya (+1).
Adobe
1
Poin bagus, @hellork. Anda dapat mencegat control + backspace di server X (melalui xmodmap) dan memetakannya ke beberapa karakter yang tidak digunakan (seperti alt-backspace).
4
Yang mengganggu tentang hal ini adalah ctrl + backspace adalah pemetaan yang sangat umum untuk "hapus kata mundur" di sebagian besar aplikasi GUI pada sebagian besar sistem operasi utama. Demikian juga, Ctrl + W tersebar luas untuk "tutup jendela". Alt + w jarang digunakan untuk apa pun di GUI, yang bisa saya pikirkan. Standarisasi akan bagus. Saya bertanya-tanya apa gangguan yang lebih besar, mengubah terminal, atau mengubah GUI?
naught101
1
Oh ya, Control-W sudah menjadi kunci penghapusan kata default pada terminal unix. Ya itu bertentangan dengan konvensi Windows / GUI, tetapi sebenarnya itu datang lebih dulu - bertahun-tahun. Salahkan Microsoft!
alexis
11
Saya menemukan utas ini melalui google, tetapi jawabannya bukan yang ingin saya dengar. Jadi saya bermain-main:
Di terminal saya, backspace normal mengirim ^H, sementara ctrl + backspace mengirim ^?. Jadi seharusnya sederhana menjadi kasus rebinding ^?untuk menghapus kata, yang secara default tersedia melalui Ctrl + W.
Pertama (percobaan yang gagal):
$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".
Jadi karena itu ini harus bekerja:
$ bind '"\C-?":unix-word-rubout'
Namun itu tidak ... ada yang bisa menjelaskan?
Percobaan kedua (berhasil):
$ bind '"\C-?":"^W"'
Di mana ^Wliteral / mentah ^W(tekan ctrl + V lalu ctrl + W untuk membuatnya muncul).
Ada beberapa jawaban yang bagus di sini, tetapi saya menyelesaikannya di Konsole dengan Pengaturan-> Edit Profil Saat Ini-> Keyboard-> Edit, kemudian tambahkan pemetaan dari Backspace+Controlke \x17. (Saya menemukan kode ASCII untuk Ctrl-w menggunakan showkey --ascii.)
Terima kasih telah menunjukkan masalahnya showkey. Jadi saya menemukan bahwa ALT+Duntuk menghapus kata di depan kursor akan sesuai \x1b\x64.
loki
Terima kasih, itu menyelesaikan masalah saya. Dalam kasus saya, saya perlu memetakan ulang Alt + Backspace dan urutannya \x1b\x7f.
DDMC
3
Itu tergantung pada apa yang dilihat bash. Pada interaksi terminal reguler, bash tidak melihat pengubah tombol apa yang Anda tekan, hanya karakter yang dihasilkan. Backspace sudah sama dengan control-H, misalnya. Menahan shift atau kontrol tidak ada bedanya.
NAMUN, aplikasi terminal Anda (xterm? Cmd? Terminal? Putty? Tergantung pada OS Anda) dapat melihat penekanan tombol Anda, dan mungkin memiliki cara untuk memetakan kombinasi tombol kontrol-mundur ruang ke sesuatu yang oleh bash dapat membedakan dari backspace.
Saya menemukan bahwa bash saya tidak melihat backspace. Tapi mungkin itu membuatnya melihatnya.
Adobe
@ adobe, apa maksudmu? Ketik 'stty' di terminal Anda dan kemudian baca manual tentang itu. Jika ^ H disetel menjadi karakter hapus Anda, Anda dapat mengaturnya ke sesuatu yang lain ... jika Anda memiliki alasan yang bagus.
1
Ada contoh yang baik tentang bagaimana melakukan ini di github.com/calj/gtconf/blob/master/zsh/zshrc . Konsole memungkinkan Anda melakukannya. Salin salah satu file * .keytab dari / usr / share / kde4 / apps / konsole / ke ~ / .kde / share / apps / konsole dan modifikasi dengan saran di tautan di atas, hapus baris "key Backspace" dan menambahkan: key Backspace-Shift-Control : "\x7f"dan key Backspace-Shift+Control : "\E[9;3~"Juga mengubah baris judul saat Anda berada di:, keyboard "Xfree4 Modlist"misalnya. Anda kemudian dapat menambahkan "\e[9;3~": backward-kill-word"ke ~ / .inputrc
Adam
2
Coba ini:
bind '"\C-_":backward-kill-word'
Secara opsional tambahkan yang berikut ke ~ / .inputrc untuk membuatnya permanen:
Control-backspace tidak mungkin sama dengan Control-underscore.
Thomas Dickey
1
Dari semua hal yang saya coba di utas ini, ini berhasil! Menggunakan "GNU bash, versi 4.3.48 (1) -release (x86_64-pc-linux-gnu)" di bash di windows / WSL
Markus Jevring
Ini berfungsi baik bagi saya di cygwin, menggunakan GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin).
zagyi
1
Dalam Konsole:
klik Settings -> Edit current profile
klik tab 'Keyboard' -> [Edit...]
klik [Add]tombol dan di bawah Key Combinationjenis kolom Backspace+Ctrl. Dalam Outputjenis kolom 0x08(yang secara konvensional merupakan karakter backspace)
Sekarang Anda harus dapat memetakan kunci itu backward-kill-wordmelalui
Terima kasih. Bekerja untuk saya, setidaknya di xfce4-terminal.
limon
0
Pada sebagian besar terminal, CTRL + W seharusnya sudah menghapus sebuah kata mundur. Ini berfungsi dengan xterm dan saya kira itu bekerja dengan konsole. CTRL + W adalah kunci standar yang mengikat pada program berbasis teks yang akan bekerja dengan vim dalam mode insert, emacs, dan setiap shell.
Ctrl+w
adalah apa yang Anda harus terbiasa, imho.Ctrl-w
"hapus kata sebelumnya" di konsol, dan lakukan dengan insting bahkan di Eclipse atau Chrome yang artinya tutup tab / tutup file saat ini. Cukup mengganggu.Jawaban:
Mengapa tidak menggunakan Alt+ Backspaceatau Ctrl+ Wyang sudah dipetakan di sebagian besar terminal. Tidak yakin tentang Konsol. Xmodmap (man xmodmap) dapat digunakan untuk memetakan kembali kunci khusus lainnya. (Paradoksnya, xmodmap tidak dapat memetakan kembali Spasied dengan sangat baik karena terminal menimpa pemetaan, tetapi ia bekerja dengan baik dengan sebagian besar kunci ...).
sumber
Saya menemukan utas ini melalui google, tetapi jawabannya bukan yang ingin saya dengar. Jadi saya bermain-main:
Di terminal saya, backspace normal mengirim
^H
, sementara ctrl + backspace mengirim^?
. Jadi seharusnya sederhana menjadi kasus rebinding^?
untuk menghapus kata, yang secara default tersedia melalui Ctrl + W.Pertama (percobaan yang gagal):
Jadi karena itu ini harus bekerja:
Namun itu tidak ... ada yang bisa menjelaskan?
Percobaan kedua (berhasil):
Di mana
^W
literal / mentah^W
(tekan ctrl + V lalu ctrl + W untuk membuatnya muncul).sumber
Edit saja
~/.inputrc
(Anda mungkin perlu membuat atau menyalin yang/etc/inputrc
ada di sana) sehingga mengandung:Ini juga akan memetakan Ctrl+ Deleteuntuk menghapus kata di sebelah kursor.
sumber
Ada beberapa jawaban yang bagus di sini, tetapi saya menyelesaikannya di Konsole dengan Pengaturan-> Edit Profil Saat Ini-> Keyboard-> Edit, kemudian tambahkan pemetaan dari
Backspace+Control
ke\x17
. (Saya menemukan kode ASCII untuk Ctrl-w menggunakanshowkey --ascii
.)sumber
showkey
. Jadi saya menemukan bahwaALT+D
untuk menghapus kata di depan kursor akan sesuai\x1b\x64
.\x1b\x7f
.Itu tergantung pada apa yang dilihat bash. Pada interaksi terminal reguler, bash tidak melihat pengubah tombol apa yang Anda tekan, hanya karakter yang dihasilkan. Backspace sudah sama dengan control-H, misalnya. Menahan shift atau kontrol tidak ada bedanya.
NAMUN, aplikasi terminal Anda (xterm? Cmd? Terminal? Putty? Tergantung pada OS Anda) dapat melihat penekanan tombol Anda, dan mungkin memiliki cara untuk memetakan kombinasi tombol kontrol-mundur ruang ke sesuatu yang oleh bash dapat membedakan dari backspace.
sumber
key Backspace-Shift-Control : "\x7f"
dankey Backspace-Shift+Control : "\E[9;3~"
Juga mengubah baris judul saat Anda berada di:,keyboard "Xfree4 Modlist"
misalnya. Anda kemudian dapat menambahkan"\e[9;3~": backward-kill-word"
ke ~ / .inputrcCoba ini:
Secara opsional tambahkan yang berikut ke ~ / .inputrc untuk membuatnya permanen:
Bekerja pada bash 4.3.11 di Kubuntu 14.04
sumber
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
.Dalam Konsole:
Settings -> Edit current profile
[Edit...]
[Add]
tombol dan di bawahKey Combination
jenis kolomBackspace+Ctrl
. DalamOutput
jenis kolom0x08
(yang secara konvensional merupakan karakter backspace)Sekarang Anda harus dapat memetakan kunci itu
backward-kill-word
melaluisumber
Pada sebagian besar terminal, CTRL + W seharusnya sudah menghapus sebuah kata mundur. Ini berfungsi dengan xterm dan saya kira itu bekerja dengan konsole. CTRL + W adalah kunci standar yang mengikat pada program berbasis teks yang akan bekerja dengan vim dalam mode insert, emacs, dan setiap shell.
sumber