문자를 지우지 않는 삽입 모드의 백 스페이스 VI 실제로 내가 오늘부터 VI를

나는 새로운 오전 VI 실제로 내가 오늘부터 VI를 배우기 시작하고 난의 행동에 붙어 가지고, 백 스페이스 키를 누릅니다. 실제로 Ubuntu 12.04에서 vi를 처음 시작했을 때 백 스페이스 키가 정상적으로 작동했지만 그 후에는 이상하게 동작하기 시작했습니다. 삽입 모드에서 백 스페이스를 누를 때마다 문자를 지우지 않고 왼쪽으로 한 자리 이동합니다. 기본 백 스페이스 기능을 다시 얻으려면 어떻게해야합니까? vim을 설치하거나 nocompatibilty를 설정하고 싶지 않습니다.



답변

때로는 vi명령이 vi 모드 vimvi활성화 할 때 호출 될 때이 명령이 별명입니다 .

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

사용 사이에서 선택을해야 추측 vi설명 행동 오는 또는 사용 vim그것에게 당신이 그것을 예상대로 할 수있다.


답변

  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처럼 동작하도록 만들 수 있습니다. 명령 줄 vi대신 명령을 제공하면 됩니다 vim. 여기서 visym 링크 만 있습니다. vim이 경우 vim은 vi 모드에서 열립니다. 로 확인할 수 있습니다 :set compatible?.

  2. 이전 답변에서 언급 한 바와 같이, 백 스페이스의 효과에 떠난 후에만 표시 될 insert modeset compatible사용할 수 있습니다.

참고 : vi 호환 모드에서는 이전에 입력 한 (입력하기 전에 insert mode) 또는 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. 데비안의 Afaik에는 일반적으로이 설정으로 설치된 시스템 전체 구성 파일이 있습니다.

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


답변

.vimrc라는 사용자 홈 디렉토리에 새 파일을 작성하십시오 (아직없는 경우). 여기에서 vi와 동시에 만들고 편집 할 것입니다

sudo vi ~/.vimrc

호환 모드 해제 및 백 스페이스 키 지우기 기능을 포함하여 다음 명령을 추가하십시오.

set nocp
set backspace=indent,eol,start

다음을 사용하여 파일 저장 및 종료

:wq

호환성 모드를 끄면 예전의 사람들이 사용했던 화살표 키를 사용할 수 있습니다.

파일을 만들 때 sudo’d이므로 파일의 소유권은 아마도 루트 일 것입니다. 파일을 사용자에게 숨길 수 있습니다.

필자의 경우 이것은 라즈베리 파이 용이므로 사용자와 그룹은 pi입니다.

chown pi:pi ~/.vimrc

이제 vi를 다시 실행하고 즐기십시오!


답변

가장 좋은 방법은 VI / VIM cheatsheet를 보는 것입니다 : http://www.viemu.com/vi-vim-cheat-sheet.gif

일반 모드 (ESC)를 입력 한 다음 SHIFT + X를 입력하십시오.


답변

당신의 장소에 ~/.zshrc

bindkey "^?" backward-delete-char

답변

내 홈 디렉토리에 .vimrc 만 포함

nocp를 설정

백 스페이스 화면에서 문자 S를 제거하지 못하는 문제를 해결했습니다.