A tecla Delete não funciona no vim no iTerm2

16

Primeiro, digitei alguma coisa no modo de inserção, como

Hello

Nesta fase, se eu não sair do modo de inserção, deletefunciona e pode excluir a palavra inteira, se eu quiser.

Se eu sair do modo de inserção e abrir novamente o modo de inserção, isso Hellonão poderá ser removido por delete. Mas o conteúdo recém-digitado pode ser removido.

Renomeei meu arquivo .vimrc, o problema ainda existe.

E fiz alguns testes no servidor remoto através do iterm, não encontrei o mesmo problema.

Qual poderia ser a causa deste problema? Como corrigi-lo?

zen
fonte
Com 'delete' você quer dizer backspace? A remoção de palavras inteiras no modo de inserção pode ser feita Ctrl-W, tente isso. Se isso não fizer nada, há algo errado com o seu vim. Eu uso o iTerm 2 e nunca tive esses problemas.
oarfish
Sim, posso usar dwou dw+ shiftno modo normal para excluir palavras. Mas backspacee ctrl+ wambos não funcionam na segunda situação que mencionei acima.
Zen
Mas você pode usar o backspace na linha de comando normal fora do vim? Muito estranho.
remo peixe 17/02
@ Fishfish, sim, eu posso, e no servidor remoto vim eu não tenho esse problema, tudo acontece de repente. Não consigo entender a pista por enquanto.
217 Zen
Qual versão do vim você possui? Eu tenho o vim 7.4.481 e não consigo reproduzir o problema.
jan.h 24/02

Respostas:

16

Esse é um recurso do vim, embora o IIRC não esteja ativado por padrão.

backspaceé uma configuração no vim, e você pode definir três parâmetros diferentes: indent, eolestart

Se você executar :help backspace, ele dirá:

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.

O que não está definido para você é start.

Se você adicionar set backspace=indent,eol,startao seu .vimrc, poderá retroceder sobre qualquer coisa no modo de inserção.

Jay Thompson
fonte
"feature" ... Por algum motivo, estou vendo-o ativado por padrão em um novo macOS 10.13 com uma instalação de distribuição do vim mais recente. Essa solução ainda resolve o problema.
Taylor Edmiston
9

Eu também tive isso, os valores padrão do processamento de texto natural estavam errados para mim.

  • MacBook Pro (15 polegadas, 2018)
  • 10.14.3 (Mojave)
  • Iterm2 3.2.7

Ir para Preferences > Profiles > Keyse carregar o padrão predefinido Natural Text Editinge excluir todas as entradas que estão prestes deletee deletecomportamento. Depois disso, funciona como esperado.

Salyangoz
fonte
1
Mesmo, exceto que acabei de remover as entradas sobre "Del->", mas não adicionei uma ligação "Envia ^ H". Então funcionou como esperado.
DagW
@DagW confirmado, a ligação ^ H é desnecessária.
Salyangoz 27/03/19
2
Tive que cavar muito fundo nas postagens erradas apenas para encontrar esta como a resposta certa, muito obrigado!
RecuencoJones
1
Eu tive o problema no meu Tmux e Iterm2 por muito tempo, nunca encontrei uma solução até encontrar seu post aqui.
1234
1
Sim! trata-se da configuração do iterm, não do próprio vim.
Rodrirokr 31/12/19