삽입 모드의 백스페이스 키는 문자를 삭제하지 않습니다.

삽입 모드의 백스페이스 키는 문자를 삭제하지 않습니다.

나 여기 처음이야, 사실 오늘부터 vi를 배우기 시작했는데 막혔어요백스페이스 키열쇠. 실제로 Ubuntu 12.04에서 vi를 처음 부팅했을 때 백스페이스 키가 제대로 작동했지만 그 이후부터 이상하게 작동하기 시작했습니다. 삽입 모드에서 백스페이스를 누를 때마다 문자가 삭제되지 않고 한 자리만 왼쪽으로 이동합니다. 기본 백스페이스 기능을 복원하는 방법은 무엇입니까? vim을 설치하거나 비호환성을 설정하고 싶지 않습니다.

답변1

  1. vi실제로 일반을 통해 사용하고 있는지 확인하십시오.

    $ vi --version | head -n 1

    이것은 내 컴퓨터에 제공됩니다 (Debian 7)

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

    vim은 vi와 더 유사해질 수 있습니다. 이는 vim이 vi 모드에서 열리는 심볼릭 링크만 있는 명령줄 vi대신 에 명령을 제공하여 수행할 수 있습니다 . 를 사용하여 이를 확인할 수 있습니다 .vimvivim:set compatible?

  2. 이전 답변에서 언급했듯이 백스페이스 키의 효과는 insert mode활성화된 상태에서 유지되는 경우에만 표시됩니다.set compatible

insert mode참고: vi 호환 모드에서는 이전에 입력한 텍스트(입력 전)나 eol의 텍스트 또는 의 들여쓰기에서 백스페이스를 사용할 수 없습니다 insert mode. 바라보다 :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"

이것이 의미하는 바를 알아보려면 다른 설정을 시도해 보십시오. 삽입 모드에서 문자/줄 바꿈 및 들여쓰기를 입력하고 삽입 모드를 종료했다가 다시 입력한 다음 백스페이스를 시도하십시오.

vi 동작에 익숙하지 않고 일반 vi 사용을 고집하지 않는 사용자(어떤 경우에도 권장되지 않음)는 이 작업을 수행해야 합니다 :set backspace=indent,eol,start. 내가 아는 한, 데비안에서는 이 설정을 사용하여 시스템 전체 구성 파일을 설치하는 것이 일반적입니다.

를 통해 현재 설정을 가져올 수 있습니다 :set bs?.

답변2

사용자의 홈 디렉터리에 아직 존재하지 않는 경우 .vimrc라는 새 파일을 만듭니다. 여기서는 vi를 사용하여 동시에 생성하고 편집하겠습니다.

sudo vi ~/.vimrc

무엇보다도 호환성 모드와 백스페이스 지우기 기능을 끄는 다음 명령을 추가합니다.

set nocp
set backspace=indent,eol,start

다음을 사용하여 파일을 저장하고 종료하십시오.

:wq

호환 모드를 끄면 오래된 vi 사용자에게 익숙한 화살표 키를 사용할 수 있습니다.

파일을 생성할 때 sudo를 사용했기 때문에 파일의 소유권은 아마도 루트일 것입니다. 사용자에게 파일을 표시할 수 있습니다.

제 경우에는 Raspberry Pi용이므로 사용자와 그룹은 pi였습니다.

chown pi:pi ~/.vimrc

이제 vi를 다시 시작하고 즐겨보세요!

답변3

때때로 vi명령은 의 별칭 이며 vim호출 시 vi해당 vi 모드가 활성화됩니다 .

레거시 모드에서도 백스페이스 키를 누르면 문자가 삭제되지만 삭제된 것으로 즉시 표시되지는 않습니다. (ESC 키를 누르면 문자가 사라집니다.)

vi설명된 동작이 있는 옵션을 사용하거나 vim예상한 방식으로 동작하는 옵션을 사용하는 것 중에서 선택해야 한다고 생각합니다 .

답변4

그냥 넣어~/.zshrc

bindkey "^?" backward-delete-char

관련 정보