Mengapa `zsh` memasukkan` ~ `ketika saya menekan tombol hapus?

3

Saya telah mengatur zsh menggunakan vim gaya untuk mengedit baris perintah.

Namun, ketika saya menggunakan Delete kunci, itu menyisipkan a ~ karakter.

Apakah saya salah mengonfigurasi zsh?

Bagaimana saya mematikannya?

Apakah saya perlu kembali ke mode edit perintah yang berbeda untuk zsh?

Saya agak baru zsh, dan mungkin jawaban untuk pertanyaan ini dapat membantu pendatang baru lainnya dengan konfigurasi awal.

Nathan Basanese
sumber
//, Google belum membantu saya, tapi mungkin saya mencari dengan tidak benar. Jangan ragu untuk menjelaskan jika downvoting. Saya berjanji tidak akan marah. google.com/…
Nathan Basanese
Bagian ini untuk Windows, Anda ingin pergi di sini: unix.stackexchange.com
Aidan Edwards
Yah, kebanyakan. Anda akan mendapatkan jawaban yang lebih baik di sana.
Aidan Edwards
6
@AidanEdwards "Bagian" ini bukan hanya untuk Windows. Kami inklusif untuk semua Desktop termasuk sistem operasi, Linux, MacOS dan Plan9.
Mokubai
2
Jika Anda menggunakan StackOverflow dengan keteraturan apa pun, Anda akan tahu bahwa ini akan ditembak lebih cepat daripada yang Anda bisa katakan, "Hei, mengapa semua downvotes ..." Anda mungkin ingin melihat pada mereka pada topik halaman dan bandingkan dengan milik kita dan sama Unix .
Mokubai

Jawaban:

4

Menjawab karena ini adalah hasil DDG pertama dalam mencari masalah yang sama.

Pertama, Anda perlu mendapatkan kode untuk kunci hapus.

Buka prompt shell Anda, misalnya:

alec@su:~$

Jalankan program 'cat', yang akan Anda gunakan untuk menentukan kode mana yang sesuai dengan kunci 'hapus' Anda.

alec@su:~$ cat

Tekan 'hapus' di keyboard Anda dan kucing akan menampilkan kode yang sesuai.

alec@su:~$ cat
^[[3~

Anda mungkin perlu menekan 'enter' untuk menampilkan kode. Aku tidak.

Terakhir, tekan 'Ctrl + C' untuk mengirim sinyal SIGTERM ke cat (mis. Untuk keluar dari eksekusi program)

alec@su:~$ cat
^[[3~^C
alec@su:~$ cat

Sekarang, Anda hanya perlu mengkonfigurasi zsh.

Bagi saya, hapus kirim ^[[3~, jadi saya bisa memasukkan yang berikut ini ke file .zshrc saya:

bindkey "^[[3~" delete-char

Mulai ulang zsh dan Anda harus baik-baik saja! :)

alecdwm
sumber
// , Cuma wow. Saya tidak bisa memaksakan diri untuk melakukan apa pun yang meretas, tetapi mungkin sesuatu seperti ini menunjukkan apa masalahnya?
Nathan Basanese
1
Secara default (atau mungkin setelah mengonfigurasi mode-vi) zsh Anda tidak tahu apa yang harus dilakukan ketika Anda menekan tombol 'delete'. Semua itu tahu jika Anda menekan tombol yang sesuai dengan sesuatu seperti ^[[3~.
alecdwm
Saya telah menambahkan ikhtisar yang lebih rinci sehingga mungkin terlihat kurang 'hack-ey' :)
alecdwm
//, Yah, kurasa itu memperbaiki masalahnya. Aku hanya menggaruk-garuk kepalaku mengapa shell yang canggih seperti zsh akan menemukan tidak menangani use case (entri vim) seperti ini.
Nathan Basanese