Mendapatkan <ctrl> + <backspace> untuk menghapus kata-kata dalam mode gnome-terminal dan vim insert

10

Sepertinya ctrl+ Wmenghapus mundur satu kata setiap kali. Itu hebat, tetapi saya benar-benar ingin ini bekerja dengan ctrl+ backspaceseperti kebanyakan aplikasi lainnya.

Apa cara terbaik untuk melakukan ini? Saya membutuhkan perubahan untuk memengaruhi perintah gnome-terminal, vim baris perintah dan vim GUI.

Costa
sumber
1
Dalam vim Anda dapat menekan D, B dan itu akan melakukan hal yang sama. Namun, saya juga kehilangan fitur ini di terminal karena Anda harus keluar dan tidak berfungsi saat beroperasi dalam mode Sisipkan. Tip luar biasa untuk CTRL + W.
mchid

Jawaban:

7

Perhatikan bahwa ini akan bekerja di terminal dan mode emacs default (yang Anda gunakan jika Ctrl+ Wmenghapus kata sebelumnya untuk Anda). Ini tidak akan berfungsi dalam mode vi bash dan tidak akan memengaruhi vi / vim itu sendiri. Karena itu, ini hanya sebagian jawaban tetapi yang terbaik yang dapat ditawarkan oleh pengguna emacs ini.


Hal semacam ini dikelola oleh readlineperpustakaan yang perilakunya dapat dikendalikan melalui ~/.inputrc. Edit (atau buat, jika tidak ada) ~/.inputrcdan tambahkan baris ini:

"\C-H":"\C-W"

Sekarang, buka terminal baru dan seharusnya berfungsi.

Penjelasan

The \C-Hsebenarnya Control+ BackSpace. Anda dapat melihat kode kunci dengan menekan Ctrl+ Vlalu, tombol yang Anda cari. Anda akan melihat itu BackSpacekembali ^H.

Sekarang, itu harus mungkin untuk mengikat Control+ BackSpaceuntuk fungsi bash yang menghapus kata sebelumnya ( backward-kill-wordatau unix-word-rubout) dengan menggunakan "\C-H": backward-kill-word. Namun, saya tidak bisa melakukannya. Ini berfungsi dengan baik dengan tombol yang berbeda ( "\C-E": backward-kill-word, misalnya, membuat Ctrl+ Emenghapus kata sebelumnya) tetapi untuk beberapa alasan, saya tidak bisa membuatnya bekerja BackSpace.

Jadi, sebagai solusinya, kita hanya memetakan Ctrl+ Backspaceke Ctrl+ Wyang sudah dipetakan ke backward-kill-word. Jadi, ketika Anda menekan Ctrl+ Backspace, itu akan diterjemahkan ke Ctrl+ Wyang, pada gilirannya, akan dikirim backward-kill-word. Saya mendapat ide untuk penyelesaian ini dari pos SU ini .

terdon
sumber
4

Hingga baru-baru ini, terminal gnome memancarkan kode yang sama pada Backspacedan Ctrl+ Backspace, sehingga Anda tidak dapat membedakan keduanya dalam aplikasi Anda.

Ini diperbaiki di vte-0.42, yang merupakan bagian dari Gnome 3.18 dirilis musim gugur ini.

Jika Anda menggunakan Wily, Anda dapat menemukan paket yang diperbarui di Pementasan Gnome3 .

egmont
sumber
dapatkah saya menjalankan ini dengan amanah tanpa menambahkan PPA yang besar?
Ciprian Tomoiagă
Bukan tanpa mengunduh, menambal, mengkompilasi dan menginstal paket libvte 2.90 yang sesuai dengan kepercayaan. Patchnya ada di bugzilla.gnome.org/show_bug.cgi?id=733246 .
egmont
3

Gunakan Alt+ Backspacesebagai gantinya: berfungsi seperti Ctrl+ Backspacedan tidak memerlukan konfigurasi apa pun.

Marco Lackovic
sumber
1

Ini bekerja pada mesin saya. Pastikan Anda menggunakan tmux dari master dan nvim dari linuxbrew dan kontrol + backspace bekerja di bash dan vim juga!

(Dapatkan bash dari linuxbrew juga)

Fábio Santos
sumber