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.

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)


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

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)


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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.