Backspace w trybie wstawiania nie kasuje znaków

10

Jestem nowy w vi , właściwie zacząłem uczyć się vi od dzisiaj i utknąłem w zachowaniu klawisza backspace . Właściwie, kiedy uruchomiłem vi na Ubuntu 12.04 po raz pierwszy, mój klawisz Backspace działał normalnie, ale potem zaczął dziwnie się zachowywać. Ilekroć wciskam backspace w trybie wstawiania, to po prostu przesuwa się o jedno miejsce w lewo zamiast kasować znak. Jak mogę przywrócić domyślną funkcję backspace? Pamiętaj, że nie chcę instalować vima ani ustawiać nocompatibilty.

Saprativa Bhattacharjee
źródło
5
Takie jest tradycyjne zachowanie vi. Jeśli masz opcję ustawienia niekompatybilności, oznacza to, że już używasz vim.
Stéphane Chazelas
Nie wiem, czy vi jest zainstalowany na Ubuntu. vi w świecie Linuksa z mojego doświadczenia jest tylko dowiązaniem symbolicznym do vima. Jeśli chcesz nauczyć się prawdziwego vi, zainstaluj nvi lub hairloom project vi.
Predrag Punosevac

Odpowiedzi:

6

Czasami vipolecenie jest aliasem, vima wywołanie as vipowoduje włączenie trybu vi.

Nawet w trybie tradycyjnym backspace usuwa znak, ale nie wyświetla go natychmiast jako usunięty. (Po naciśnięciu ESC znaki zniknęły.)

Zgadnij, musisz wybrać pomiędzy użyciem, viktóre ma opisane zachowanie, a użyciem, vimktóre jest w stanie zrobić to tak, jak tego oczekujesz.

michas
źródło
9
  1. Sprawdź, czy faktycznie używasz zwykłego viza pośrednictwem

    $ vi --version | head -n 1

    To daje na moim komputerze (Debian 7)

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

    vim można sprawić, aby zachowywał się bardziej jak vi. Można tego dokonać, podając polecenie vizamiast vimz wiersza polecenia, gdzie vijest tylko dowiązanie symboliczne vim, w którym to przypadku vim jest otwierany w trybie vi. Możesz to sprawdzić za pomocą :set compatible?.

  2. Jak wspomniano w poprzedniej odpowiedzi, efekt cofania staje się widoczny dopiero po opuszczeniu, insert modegdy set compatiblejest włączony.

Uwaga: W trybie zgodnym z vi nie można cofać tekstu nad tekstem, który został wcześniej wprowadzony (przed wprowadzeniem insert mode), eol lub wcięcie insert mode. widzieć :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"

Wypróbuj różne ustawienia, aby zrozumieć ich znaczenie: Wprowadź znaki / podziały wierszy i wcięcia w trybie wstawiania, wyjdź i ponownie wprowadź tryb wstawiania, a następnie spróbuj cofnąć.

Użytkownicy, którzy nie są zaznajomieni z zachowaniem vi i nie nalegają na użycie zwykłego vi (co zresztą nie jest zalecane), powinni :set backspace=indent,eol,start. Afaik w Debianie jest zwykle instalowany w systemie z tym ustawieniem.

Możesz uzyskać bieżące ustawienie za pośrednictwem :set bs?.

Hotschke
źródło
5

Utwórz nowy plik w katalogu osobistym użytkownika o nazwie .vimrc, jeśli jeszcze go nie ma. Tutaj będziemy tworzyć i edytować w tym samym czasie za pomocą vi

sudo vi ~/.vimrc

Dodaj następujące polecenia, które obejmują wyłączenie trybu zgodności i funkcję wymazywania klawisza Backspace:

set nocp
set backspace=indent,eol,start

Zapisz i zamknij plik za pomocą

:wq

Wyłączenie trybu zgodności pozwala na używanie klawiszy strzałek, do których jesteśmy przyzwyczajeni.

Ponieważ sudo'd podczas tworzenia pliku, właścicielem pliku prawdopodobnie będzie root. Możesz udostępnić plik użytkownikowi.

W moim przypadku było to dla malinowego pi, więc użytkownik i grupa to pi:

chown pi:pi ~/.vimrc

Teraz ponownie odpal vi i ciesz się!

powrócić
źródło
1
set nocpwykonał dla mnie lewę
Louis M
0

po prostu umieść w swoim ~/.zshrc

bindkey "^?" backward-delete-char
jhvaras
źródło
0

Tworzenie .vimrc w moim katalogu domowym, który zawiera tylko

ustaw nocp

naprawiono mój problem polegający na tym, że backspace nie usuwa postaci z ekranu Dick S.

Dick Seabrook
źródło