A tecla Backspace não funciona no Vim / vi

89

Acabei de fazer algumas alterações no .vimrcarquivo e no .bash_aliasesarquivo e, a partir desse momento, não consigo deletar palavras com a tecla backspace.

Meu .vimrcarquivo tem:

set nocompatible

set number
set incsearch
set autoindent
set ruler
set autowrite
set smarttab
set linebreak
set spell
set et
set title

set mouse=v
set history=50
set tabstop=4
set matchtime=2
set matchpairs+=<:>

syntax enable
filetype plugin indent on
filetype indent on
set sw=4

map <f2> :w\|!python %

hi SpellBad ctermfg=000 guifg=#000

E meu .bash_aliasesarquivo tem duas linhas para o Vim:

alias vim="vim -c 'startinsert' -u ~/.vim/.vimrc"
alias vi="vi -c 'startinsert' -u ~/.vim/.vimrc"

Meu ~/.vimdiretório não tem um único plugin ou script, então não há nenhuma chance de que o plugin cause isso.

~/.vim/.vimrcé um link simbólico. O .vimrcarquivo real está em um ~/vimrc/diretório que é um repositório git.

Santosh Kumar
fonte
Isso resolveu meu problema: askubuntu.com/a/899059/525661
Hem

Respostas:

166

Para permitir o retrocesso sobre tudo no modo de inserção (incluindo recuo inserido automaticamente, quebras de linha e início da inserção), você pode definir a backspaceopção:

:set backspace=indent,eol,start

ou

:set backspace=2  "compatible with version 5.4 and earlier

Por padrão, essa opção está vazia, não permitindo que você retroceda nas coisas mencionadas acima. Este é o comportamento padrão do Vi.

Você pode colocar esta linha em seu vimrcarquivo para que ele seja configurado automaticamente quando o Vim iniciar:

set backspace=indent,eol,start  " more powerful backspacing

Além disso, a partir do Vim 8.0, se nenhum arquivo vimrc do usuário for encontrado, o Vim definirá backspaceesse valor carregando o defaults.vimscript.

Eugene Yarmash
fonte
ainda não funciona para mim = / eu tenho set backspace=2 set backspace=indent,eol,start fixdel
holms
2
@holms try set backspace=2alone
Hoang Huynh
Qual a razão para esses padrões em que o retrocesso está apenas movendo o cursor para a esquerda?
Vitaly Zdanevich
2
Se você usar o vim80 acima, consulte: stackoverflow.com/questions/52438373/…
Lewis Chan
9

Como um linux-newb, eu estava em uma nova instalação do Ubuntu 18.04 e meu editor vim se comportou de forma diferente do que eu estava acostumado nas outras máquinas que uso (para incluir o comportamento de retrocesso que você está descrevendo). Não percebi que estava realmente usando o vi e não o vim (ambos executados com vi).

Instalar o vim e depois editar um arquivo trouxe de volta o comportamento que eu estava acostumado, incluindo o backspacing funcionando como eu esperava.

sudo apt install vim
Matt Klein
fonte
4

Meu ~/.vimrcarquivo tinha conteúdo set nocompatible. Adicionada outra linha ao mesmo arquivo para fazer o backspace funcionar -

set backspace=indent,eol,start

E apenas correr

source ~/.vimrc

no mesmo terminal para que a mudança tenha efeito imediato no mesmo shell. Não há necessidade de abrir o vi e executar

:set backspace=indent,eol,start
Aniket Thakur
fonte
2

Eu tive o mesmo problema em um Debian 7.8 sobre SSH em urxvt + tmux. Eu tinha o vim e o vim-tiny instalados.

Remover o vim-tiny resolveu o problema.

lilorox
fonte
2

Para mim, eu tinha a configuração abaixo, porém o backspace ainda não funciona.

set backspace=indent,eol,start

Finalmente, descobri que a linha seguinte levou a esse problema.

inoremap <expr><C-h> neocomplete#smart_close_popup()

Quando esta configuração é excluída, a tecla backspace funciona bem no modo de inserção.

Reason: Isso porque o Vim vê CTRL-H como um backspace, e esta linha é remapeada para neocompletar # smart_close_popup () no modo de inserção.

Eco
fonte
1

Para mim (servidor Debian, conectado com "Konsole" de outro linux), problemas com a tecla backspace e as teclas de seta foram resolvidos após desinstalar o pacote vim-tiny e instalar o pacote vim.

jm009
fonte
1
Talvez esses pacotes instalem diferentes arquivos vimrc.
Eugene Yarmash
1

Muitas vezes, também é uma função do tipo getty selecionado se alguém estiver usando um cliente SSH como o Putty ou algo parecido. O mais preferível seria usar o vt100 +, pois é a emulação mais padrão.

Eu já tinha o :fixdelque não estava funcionando. Tive que removê-lo e substituí-lo pela primeira sugestão para fazê-lo funcionar

HighOnMeat
fonte