Backspace no modo de inserção no vi não apaga o caractere


70

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 apenas move um lugar para a esquerda em vez de apagar o caractere.

Como posso recuperar a funcionalidade de backspace padrão? Observe que não quero instalar o vim ou definir a nocompatibilidade.

Respostas:


39

Esse é o comportamento correto para o vi e apaga o personagem, apenas não o substitui por um espaço em branco como no vim. Ficará aparente quando você substituir o caractere apagado por outro caractere ou retornar ao modo de comando.

Por exemplo, iniciando com o modo de comando em uma linha vazia, o seguinte resultará na linha que contém fo:

ifooBackspaceEsc

Antes de você pressionar a Esctecla, a linha será lida foo, mas a última ofoi marcada como uma "coluna de apagamento". Consulte http://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html#tag_20_152_13_88 (principalmente o ponto 4 desse cabeçalho e também navegue um pouco mais para ler sobre <Control> -H)


73

Aqui está a solução mais simples.
Abra um terminal, vá para o diretório inicial e digite

vi .vimrc

um novo arquivo aberto agora adicione essas linhas ao arquivo e saia salvando

$ set nocompatible
$ set backspace=2

9
O OP mencionou que eles não querem usarnocompatibility
kiri

11
não há necessidade de nenhuma compatibilidade u também pode fazê-lo apenas por addig a segunda linha
Adithya Chakilam

11
A segunda linha só funciona para mim se eu também adicionar a primeira linha.
djjeck

Começou com um arquivo .vimrc vazio e se perguntou por que o backspace não funcionava no mac no iTerm2. Muito obrigado!
Igor Malyk 23/10/2015

@ minerz029 add ainda esta é a resposta para a qual a maioria das pessoas está aqui, pois não havia essa qualificação no título da página.
Muhd 27/02

23

Você precisa mudar para o modo "inserir" movendo o cursor com i. Existem outras maneiras de excluir caracteres diretamente. Você pode baixar um powerpoint que eu uso ao dar uma aula sobre VI aqui .

Parece que você está no modo "Comando". Para mover o cursor:
H= Esquerda, J= Para cima, K= Para baixo, L= Para a direita

Depois de posicionar o cursor, você pode excluir o texto da seguinte maneira:
x Exclui o caractere abaixo do cursor
X Exclui o caractere antes do cursor
dwExclui do cursor para a próxima palavra
dd Exclui a linha em que o cursor está.

Para inserir texto , você pode usar um dos modos de entrada de texto.
aAdiciona texto à direita do cursor
AAdiciona texto ao final da linha atual
iAdiciona texto à esquerda do cursor
IAdiciona teste ao início da linha atual
oAbre uma nova linha abaixo da linha atual e coloca você no modo de entrada de texto
OAbre uma nova linha Acima da linha atual e coloca você no modo de entrada de texto

Para sair do modo de entrada de texto e retornar ao modo de comando, use Esc.

Para desfazer alterações: (Um aluno favorito)
uDesfazer o último comando inserido
UDesfazer todas as alterações na ** linha atual **

Para Salvar / Sair: :wGrava (Salva) o arquivo e permanece aberto
:wqGrava (Salva) o arquivo e sai do VI
:qSai (Sai) se você não fez nenhuma alteração
:q! Sair (Sai) sem salvar as alterações
ZZGrava (Salva) o arquivo e sai do VI (o mesmo que :wq)


11
O OP mencionou que o comportamento misterioso ocorre no modo de inserção . Portanto, essa não é a resposta para a pergunta.
LarsH

Na verdade, o OP não declarou no modo de inserção . A pergunta foi editada.
Argusvision

11
Está bem. Você está certo. Parece que eu fiz uma suposição. Tem sido minha experiência que a maioria das pessoas novas no VI enfrenta problemas com os modos de comutação e navegando no modo de comando. Meus alunos geralmente reclamam e culpam o VI por ter um comportamento irregular quando é simplesmente erro do usuário ou por não ter uma noção do conjunto de comandos.
Argusvision

11
Compreensível. Concordo que essa é a reação comum ao modo não-inserção.
Larsh

Argus, "no modo de inserção" foi adicionado ao título da pergunta em uma edição, mas estava no corpo da pergunta desde o início.
LarsH 9/09/15

13

Instale o pacote vim completo para obter a funcionalidade de backspace e tecla de seta

sudo apt-get update
sudo apt-get install vim

Está funcionando como esperado .. Melhor resposta
Vicky

Essa é a resposta perfeita. Não há necessidade de editar nenhum arquivo de configuração, basta instalar o vim-runtimepacote e tudo funciona como estou acostumado. Obrigado!
Olli D-Metz
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.