backspace tidak berfungsi, bahkan setelah mencoba memperbaikinya

7

Saya mencoba mengikuti instruksi di tombol Backspace yang tidak berfungsi di vim , tetapi saya masih memiliki masalah yang sama: BACKSPACE menyisipkan^?

Artinya: memasukkan set bs=indent,eol,startdi saya ~/.vimrctidak menyelesaikan masalah.

Saya yakin bahwa saya memuat file sumber yang benar (saya melakukan tes pengaturan lain, dan perubahan diperbanyak).

Saya menggunakan: Vi IMproved 7.2di Ubuntu dengan Gnome. Dalam aplikasi terminal, backspace berfungsi dengan baik.

dsg
sumber

Jawaban:

6

Vim tampaknya bingung tentang apa yang dikirim terminal Anda sebagai karakter hapus. Karena ini bervariasi antara ^?( Ctrl+?, atau DELuntuk "hapus") dan ^H( Ctrl+Hatau BSuntuk "backspace"), Vim bergantung pada seseorang yang mengatakan apa yang diharapkan.

Itu seharusnya tidak terjadi kecuali

  • Anda mengubah pengaturan terkait di vimrc,
  • Anda mengubah nilai TERMvariabel lingkungan,
  • database informasi terminal Anda kacau, atau
  • Anda menderita infestasi GREMLIN.

Untuk pemecahan masalah, cobalah menjalankan perintah stty erase ^?sebelum memulai Vim, dan lihat apakah ini memperbaikinya. Masukkan ^?tidak secara terpisah sebagai ^dan ?, tetapi dengan terlebih dahulu menekan Ctrl+V, maka Backspacekunci Anda . Jika shell Anda berperilaku baik, ini akan menghasilkan representasi literal dari apa pun terminal Anda kirim ketika Anda menekan tombol itu.

peth
sumber
Terima kasih, stty erase ^?berhasil untuk saya. Saya menambahkannya ke .bashrcfile saya .
dsg
1

Menemukan pertanyaan ini ketika mencari sesuatu yang sedikit terkait, dan berpikir saya akan mengirim tindak lanjut yang bertele-tele (tapi mungkin bermanfaat).

Sebagian besar versi modern dari stty (1) (termasuk versi yang dikirimkan dengan GNU Coreutils) menafsirkan urutan dua karakter ^ ?dan ^ hsebagai urutan kontrol ASCII DELdan ASCII BS(masing-masing). Atau lebih umum, urutan dua karakter dimulai dengan ^sebagai karakter kontrol ASCII yang setara.

Jadi dua perintah berikut ini setara:

stty erase '^?'
stty erase ^VDEL
David Klann
sumber
1

Jika Anda menggunakan gnome-terminal maka harus ada pengaturan untuk mengemulasi backspace ^ H. Ada pengaturan serupa di emulator terminal lainnya; ini adalah tempat pertama yang akan saya kunjungi karena tidak ada orang lain yang menyebutkannya.

Mengakses profil di terminal gnome

Pengaturan perilaku backspace

Elcash
sumber
0

Cobalah menambahkan berikut ke .bashrc Anda (atau .profile)
stty menghapus ^ H
Itu adalah karakter "^" diikuti oleh karakter "H"
--atau--
Jika itu tidak berhasil, untuk mendapatkan "^ H" jenis kontrol -V diikuti oleh kontrol-H

Lihat bantuan vim
: bantu gui-pty-erase

broomdodger
sumber