Tombol hapus tidak berfungsi di vim di iTerm2

16

Pertama, saya mengetik sesuatu pada mode insert, seperti

Hello

Pada tahap ini, jika saya tidak keluar dari mode penyisipan, deleteberfungsi dan dapat menghapus seluruh kata jika saya mau.

Jika saya keluar dari mode insert, dan buka lagi mode insert, ini Hellotidak bisa dihapus oleh delete. Tetapi konten yang baru diketik dapat dihapus.

Saya telah mengganti nama .vimrc saya, masalah masih keluar.

Dan saya melakukan beberapa pengujian pada server jauh melalui iterm, tidak mengalami masalah yang sama.

Apa yang bisa menjadi penyebab masalah ini? Bagaimana memperbaikinya?

Zen
sumber
Dengan 'delete' maksud Anda backspace? Menghapus seluruh kata dalam mode sisipkan dapat dilakukan dengan Ctrl-W, coba itu. Jika itu tidak berhasil, ada yang salah dengan vim Anda. Saya menggunakan iTerm 2 dan tidak pernah memiliki masalah seperti itu.
oarfish
Ya, saya dapat menggunakan dwatau dw+ shiftdalam mode normal untuk menghapus kata-kata. Tetapi backspacedan ctrl+ wkeduanya tidak berfungsi dalam situasi kedua yang saya sebutkan di atas.
Zen
Tetapi Anda dapat menggunakan backspace pada baris perintah normal di luar vim? Sangat aneh.
oarfish
@ oarfish, ya, saya bisa, dan di server jarak jauh vim saya tidak punya masalah seperti itu, semua terjadi secara tiba-tiba. Saya tidak bisa mendapatkan petunjuk untuk saat ini.
Zen
Apa versi vim yang Anda miliki? Saya memiliki vim 7.4.481, dan saya tidak bisa mereproduksi masalah.
jan.h

Jawaban:

16

Ini adalah fitur vim, meskipun IIRC tidak akan diaktifkan secara default.

backspaceadalah pengaturan di vim, dan Anda dapat mengatur tiga parameter yang berbeda: indent, eol, danstart

Jika Anda menjalankan :help backspace, itu akan memberi tahu Anda:

Influences the working of `<BS>`, `<Del>`, `CTRL-W` and `CTRL-U` in Insert
mode.  This is a list of items, separated by commas.  Each item allows
a way to backspace over something:

value     effect
indent    allow backspacing over autoindent
eol       allow backspacing over line breaks (join lines)
start     allow backspacing over the start of insert; CTRL-W and CTRL-U
          stop once at the start of insert.

Yang tidak diatur untuk Anda adalah start.

Jika Anda menambahkan set backspace=indent,eol,start.vimrc Anda, Anda akan dapat melakukan backspace atas apa pun dalam mode insert.

Jay Thompson
sumber
"fitur" ... Untuk beberapa alasan, saya melihatnya diaktifkan secara default pada macOS 10.13 baru dengan instalasi baru vim terbaru. Solusi ini masih menyelesaikan masalah.
Taylor Edmiston
9

Saya juga mengalami ini, nilai default pemrosesan teks alami salah bagi saya.

  • MacBook Pro (15 inci, 2018)
  • 10.14.3 (Mojave)
  • Iterm2 3.2.7

Pergi ke Preferences > Profiles > Keysdan muat preset default Natural Text Editingdan hapus semua entri yang berhubungan deletedan deleteperilaku. Setelah itu berfungsi seperti yang diharapkan.

Salyangoz
sumber
1
Sama, kecuali saya baru saja menghapus entri tentang "Del->", tetapi tidak menambahkan ikatan "Kirim ^ H". Kemudian itu berfungsi seperti yang diharapkan.
DagW
@DAGW dikonfirmasi, pengikatan ^ H tidak perlu.
Salyangoz
2
Harus menggali terlalu dalam ke posting yang salah hanya untuk menemukan ini sebagai jawaban yang tepat, terima kasih banyak!
RecuencoJones
1
Saya memiliki masalah pada Tmux dan Iterm2 saya untuk waktu yang lama, saya tidak pernah menemukan solusi sampai saya menemukan posting Anda di sini.
1234
1
Iya! ini tentang konfigurasi iterm, bukan vim itu sendiri.
Rodrirokr