backspace no modo de inserção não apagando caracteres

10

Eu sou novo no vi , na verdade, comecei a aprender vi a partir de hoje e fiquei preso ao comportamento da tecla backspace . Na verdade, quando eu iniciei o vi no meu Ubuntu 12.04 pela primeira vez, minha chave de backspace estava funcionando normalmente, mas depois disso ela começou a se comportar de maneira estranha. Sempre que pressiono o backspace no modo de inserção, ele move apenas um lugar para a esquerda, em vez de apagar o caractere. Como posso recuperar a funcionalidade de backspace padrão? Observe que eu não quero instalar o vim ou definir a nocompatibilidade.

Saprativa Bhattacharjee
fonte
5
Esse é o comportamento tradicional do vi. Se você tem a opção de definir a nocompatibilidade, já está usando vim.
Stéphane Chazelas
Não sei que o vi está instalado no Ubuntu. vi no mundo Linux, na minha experiência, é apenas um link simbólico para o vim. Se você quiser aprender o vi real, instale o projeto nvi ou hairloom vi.
Predrag Punosevac

Respostas:

6

Às vezes, o vicomando é um alias para vime quando chamado como viativa seu modo vi.

Mesmo no modo tradicional, o backspace está excluindo o caractere, mas não o exibe como excluído imediatamente. (Depois de pressionar ESC, os caracteres desaparecem.)

Acho que você precisa escolher entre o vique vem com o comportamento descrito ou o vimque é capaz de fazê-lo da maneira que você espera.

michas
fonte
9
  1. Caixa se você está realmente usando plain vivia

    $ vi --version | head -n 1

    Isso dá na minha máquina (Debian 7)

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

    O vim pode ser feito para se comportar mais como o vi. Isso pode ser feito fornecendo o comando, e vinão a vimpartir da linha de comando, onde viexiste apenas um link simbólico vim; nesse caso, o vim é aberto no modo vi. Você pode verificar isso com :set compatible?.

  2. Conforme mencionado na resposta anterior, o efeito do backspace se torna visível apenas depois de sair insert modequando set compatibleestá ativado.

Nota: No modo compatível com vi, você não pode retroceder sobre o texto que foi inserido anteriormente (antes de ser inserido insert mode) ou nos eol ou recuos insert mode. Vejo :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"

Experimente as diferentes configurações para entender seu significado: digite caracteres / quebras de linha e recuo no modo de inserção, saia e entre novamente no modo de inserção e tente retroceder.

Usuários que não estão familiarizados com o comportamento do vi e não insistem em usar o vi simples (não recomendado de qualquer maneira) deveriam :set backspace=indent,eol,start. Após o Debian no Debian, geralmente existe um arquivo de configuração para todo o sistema instalado com esta configuração.

Você pode obter a configuração atual via :set bs?.

Hotschke
fonte
5

Crie um novo arquivo no diretório inicial do usuário chamado .vimrc, se ele ainda não estiver lá. Aqui, criaremos e editaremos ao mesmo tempo com o vi

sudo vi ~/.vimrc

Adicione os seguintes comandos, que incluem desativar o modo de compatibilidade e a funcionalidade de exclusão da tecla backspace:

set nocp
set backspace=indent,eol,start

Salve e saia do arquivo usando

:wq

Desativar o modo de compatibilidade permite o uso de teclas de seta para as quais estamos acostumados aos velhos vi.

Como sudo'd ao criar o arquivo, a propriedade do arquivo provavelmente será raiz. Você pode mostrar o arquivo ao usuário.

No meu caso, isso era para um raspberry pi, então o usuário e o grupo são pi:

chown pi:pi ~/.vimrc

Agora abra o vi novamente e divirta-se!

recurso
fonte
1
set nocpfez o truque para mim
Louis M
2

Eu acho que a melhor maneira seria olhar para o cheatsheet do VI / VIM: http://www.viemu.com/vi-vim-cheat-sheet.gif

Entre no modo normal (ESC) e, em seguida, SHIFT + X.

BlackPioter
fonte
0

basta colocar no seu ~/.zshrc

bindkey "^?" backward-delete-char
jhvaras
fonte