Backspace dalam mode insert in vi tidak menghapus karakter

70

Saya baru mengenal vi, sebenarnya saya sudah mulai belajar vi mulai hari ini dan saya terjebak pada perilaku kunci backspace.

Sebenarnya ketika saya menjalankan vi pada Ubuntu 12.04 saya untuk pertama kalinya kunci backspace saya bekerja dengan normal tetapi setelah itu ia mulai bertingkah aneh. Setiap kali saya menekan backspace dalam mode insert, ia hanya memindahkan satu tempat ke kiri alih-alih menghapus karakter.

Bagaimana saya bisa mendapatkan kembali fungsionalitas backspace default? Harap dicatat bahwa saya tidak ingin menginstal vim atau mengatur nocompatibilty.

Saprativa Bhattacharjee
sumber

Jawaban:

39

Itu perilaku yang benar untuk vi, dan itu menghapus karakter, itu hanya tidak menunjukkannya dengan menggantinya dengan kosong seperti di vim. Ini akan terlihat ketika Anda menimpa karakter yang dihapus dengan karakter lain, atau beralih kembali ke mode perintah.

Misalnya memulai dengan mode perintah pada baris kosong, berikut ini akan menghasilkan baris yang berisi fo:

ifooBackspaceEsc

Sebelum Anda menekan Esctombol, baris akan membaca foo, tetapi yang terakhir otelah ditandai sebagai "kolom hapus". Lihat http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88 (umumnya poin 4 di bawah tajuk itu, dan jelajahi sedikit lebih jauh ke bawah untuk membaca tentang <Control> -H)

geirha
sumber
73

Inilah solusi paling sederhana.
Buka terminal, buka direktori home dan ketik

vi .vimrc

file baru yang terbuka sekarang tambahkan baris ini ke file dan keluar dengan menyimpan

$ set nocompatible
$ set backspace=2
Adithya Chakilam
sumber
9
OP menyebutkan bahwa mereka tidak ingin menggunakannocompatibility
kiri
1
tidak perlu untuk tidak kompatibel kamu juga dapat melakukannya hanya dengan addig baris kedua
Adithya Chakilam
1
Baris kedua hanya berfungsi untuk saya jika saya juga menambahkan baris pertama.
djjeck
Dimulai dari .vimrc yang kosong dan bertanya-tanya mengapa backspace tidak berfungsi pada mac di iTerm2. Terima kasih banyak!
Igor Malyk
@ minerz029 tambahkan namun ini adalah jawaban untuk sebagian besar orang, karena tidak ada kualifikasi seperti itu dalam judul halaman.
Muhd
23

Anda perlu mengubah ke mode "masukkan" dengan menggerakkan kursor dengan i. Ada cara lain untuk menghapus karakter secara langsung. Anda dapat mengunduh powerpoint yang saya gunakan saat mengajar kelas di VI di sini .

Sepertinya Anda berada dalam mode "Command". Untuk menggerakkan kursor Anda:
H= Kiri, J= Atas, K= Bawah, L= Kanan

Setelah kursor diposisikan, Anda dapat menghapus teks sebagai berikut:
x Menghapus karakter di bawah kursor
X Menghapus karakter sebelum kursor
dwMenghapus dari kursor ke kata berikutnya
dd Menghapus baris kursor aktif.

Untuk memasukkan teks , Anda dapat menggunakan salah satu mode entri teks.
aMenambahkan teks di sebelah kanan kursor.
AMenambahkan teks ke akhir baris saat ini.
iMenambahkan teks ke kiri kursor.
IMenambahkan tes ke awal baris saat ini.
oMembuka baris baru di bawah garis saat ini dan menempatkan Anda dalam mode entri teks
OMembuka baris baru Di atas baris saat ini dan menempatkan Anda dalam mode entri teks

Untuk keluar dari mode entri teks, dan kembali ke mode Command, gunakan Esc.

Untuk Membatalkan perubahan: (Favorit siswa)
uMembatalkan perintah terakhir yang dimasukkan
UBatalkan semua perubahan ke baris ** saat ini **

To Save / Quit: :wMenulis (Menyimpan) file dan tetap membuka
:wqMenuliskan (Menyimpan) file dan keluar VI
:qKeluar (Keluar) jika Anda tidak membuat perubahan
:q! Keluar (Keluar) tanpa menyimpan perubahan
ZZMenuliskan (Menyimpan) file dan keluar VI (sama seperti :wq)

Argusvision
sumber
11
OP menyebutkan bahwa perilaku misterius terjadi dalam mode insert . Jadi ini bukan jawaban untuk pertanyaan yang diajukan.
LarsH
Sebenarnya OP tidak menyatakan dalam mode insert . Pertanyaannya telah diedit.
Argusvision
1
Baik. Kamu benar. Sepertinya saya membuat asumsi. Sudah pengalaman saya bahwa kebanyakan orang yang baru ke VI mengalami masalah dengan beralih mode, dan menavigasi ketika dalam mode perintah. Murid-murid saya sering mengeluh dan menyalahkan VI karena memiliki perilaku yang tidak menentu ketika itu hanya kesalahan pengguna, atau tidak memiliki pemahaman tentang set perintah.
Argusvision
1
Bisa dimengerti Saya setuju itu adalah reaksi umum terhadap mode non-insert.
LarsH
Argus, "dalam mode sisipkan" telah ditambahkan ke judul pertanyaan dalam sebuah pengeditan, tetapi sudah ada di tubuh pertanyaan sejak awal.
LarsH
13

Instal paket vim lengkap untuk mendapatkan fungsionalitas backspace dan tombol panah

sudo apt-get update
sudo apt-get install vim
Ratnala Jagadeesh
sumber
Ini berfungsi seperti yang diharapkan .. Jawaban terbaik
Vicky
Itu jawaban yang sempurna. Tidak perlu mengedit file konfigurasi, cukup instal vim-runtimepaket dan semuanya berfungsi seperti biasa. Terima kasih!
Olli D-Metz