backspace dalam mode insert tidak menghapus karakter

10

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
5
Itulah perilaku vi tradisional. Jika Anda memiliki opsi untuk mengatur kompatibilitas, maka Anda sudah menggunakan vim.
Stéphane Chazelas
Saya tidak tahu vi diinstal di Ubuntu. vi di dunia Linux dalam pengalaman saya hanyalah tautan simbolis ke vim. Jika Anda ingin belajar vi nyata, instal nvi atau proyek hairloom vi.
Predrag Punosevac

Jawaban:

6

Terkadang viperintahnya adalah alias untuk vimdan ketika dipanggil sebagai vimengaktifkan mode-vi.

Bahkan dalam mode backspace tradisional menghapus karakter, tetapi tidak menampilkannya segera dihapus. (Setelah menekan ESC, karakternya hilang.)

Kira Anda harus memilih antara menggunakan viyang datang dengan perilaku yang dijelaskan atau menggunakan vimyang mampu melakukannya dengan cara yang Anda harapkan.

michas
sumber
9
  1. Periksa apakah Anda benar-benar menggunakan polos vivia

    $ vi --version | head -n 1

    Ini memberi di mesin saya (Debian 7)

    VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Feb 10 2013 02:27:59)

    vim dapat dibuat untuk berperilaku lebih seperti vi. Ini dapat dilakukan dengan memberikan perintah vialih-alih dari vimcommandline, di mana vihanya sym-link vim, di mana vim dibuka dalam mode vi. Anda dapat memeriksanya dengan :set compatible?.

  2. Seperti disebutkan oleh jawaban sebelumnya, efek dari backspace menjadi hanya terlihat setelah meninggalkan insert modeketika set compatiblediaktifkan.

Catatan: Dalam mode vi-kompatibel, Anda tidak dapat mundur teks yang sebelumnya dimasukkan (sebelum dimasukkan insert mode) atau eol atau lekukan dalam insert mode. Lihat :help 'bs'

    'backspace' 'bs'        string  (default "")
                            global
                            {not in Vi}
    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.

    When the value is empty, Vi compatible backspacing is used.
    For backwards compatibility with version 5.4 and earlier:
    value   effect
      0     same as ":set backspace=" (Vi compatible)
      1     same as ":set backspace=indent,eol"
      2     same as ":set backspace=indent,eol,start"

Cobalah pengaturan yang berbeda untuk memahami artinya: Masukkan karakter / jeda baris dan lekukan dalam mode insert, keluar dan masukkan kembali mode insert dan kemudian coba backspacing.

Pengguna yang tidak terbiasa dengan perilaku vi dan tidak bersikeras menggunakan polos vi (tidak direkomendasikan lagi) harus :set backspace=indent,eol,start. Afaik di Debian biasanya ada file konfigurasi sistem yang diinstal dengan pengaturan ini.

Anda bisa mendapatkan pengaturan saat ini melalui :set bs?.

Hotschke
sumber
5

Buat file baru di direktori home pengguna bernama .vimrc jika belum ada di sana. Di sini kita akan membuat dan mengedit bersamaan dengan vi

sudo vi ~/.vimrc

Tambahkan perintah berikut, yang meliputi mematikan mode kompatibilitas dan fungsi hapus spasi mundur:

set nocp
set backspace=indent,eol,start

Simpan dan keluar file menggunakan

:wq

Menonaktifkan mode kompatibilitas memungkinkan penggunaan tombol panah yang digunakan oleh orang-orang tua.

Karena kami sudo ketika membuat file, kepemilikan file mungkin akan menjadi root. Anda dapat memberi tahu file tersebut kepada pengguna.

Dalam kasus saya ini untuk pi raspberry, jadi pengguna dan grup adalah pi:

chown pi:pi ~/.vimrc

Sekarang nyalakan vi lagi dan nikmatilah!

berulang
sumber
1
set nocpmelakukan trik untuk saya
Louis M
0

hanya tempat di ~/.zshrc

bindkey "^?" backward-delete-char
jhvaras
sumber
0

Membuat .vimrc di direktori home saya yang hanya berisi

atur nocp

memperbaiki masalah saya dengan backspace tidak menghapus karakter dari layar Dick S.

Dick Seabrook
sumber