La tecla de retroceso no funciona en Vim / vi

86

Acabo de hacer algunos cambios en el .vimrcarchivo y el .bash_aliasesarchivo y desde ese momento no puedo eliminar palabras con la tecla de retroceso.

Mi .vimrcarchivo tiene:

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

Y mi .bash_aliasesarchivo tiene dos líneas para Vim:

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

Mi ~/.vimdirectorio no tiene un solo complemento o script, por lo que no hay ninguna posibilidad de que el complemento cause esto.

~/.vim/.vimrces un enlace simbólico. El .vimrcarchivo real está en un ~/vimrc/directorio que es un repositorio de git.

Santosh Kumar
fuente
Esto resolvió mi problema: askubuntu.com/a/899059/525661
Hem

Respuestas:

159

Para permitir el retroceso sobre todo en el modo de inserción (incluida la sangría insertada automáticamente, los saltos de línea y el inicio de la inserción), puede configurar la backspaceopción:

:set backspace=indent,eol,start

o

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

De forma predeterminada, esta opción está vacía, lo que no le permite retroceder sobre las cosas mencionadas anteriormente. Este es el comportamiento estándar de Vi.

Puede poner esta línea en su vimrcarchivo para que se configure automáticamente cuando se inicie Vim:

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

Además, a partir de Vim 8.0 si no se encuentra ningún archivo vimrc de usuario, Vim establecerá backspaceeste valor cargando el defaults.vimscript.

Eugene Yarmash
fuente
todavía no funciona para mí = / lo tengo set backspace=2 set backspace=indent,eol,start fixdel
holms
2
@holms try set backspace=2alone
Hoang Huynh
¿Cuál es el motivo de estos valores predeterminados en los que el retroceso se mueve simplemente hacia la izquierda?
Vitaly Zdanevich
2
Si usa vim80 arriba, vea esto: stackoverflow.com/questions/52438373/…
Lewis Chan
8

Como un linux-newb, estaba en una instalación nueva de Ubuntu 18.04 y mi editor vim se comportó de manera diferente a como estaba acostumbrado en las otras máquinas que uso (para incluir el comportamiento de retroceso que está describiendo). No me di cuenta de que en realidad estaba usando vi y no vim (ambos se ejecutan con vi).

La instalación de vim y luego la edición de un archivo me devolvió el comportamiento al que estaba acostumbrado, incluido el retroceso funcionando como esperaba.

sudo apt install vim
Matt Klein
fuente
4

Mi ~/.vimrcarchivo tenía contenido set nocompatible. Se agregó otra línea al mismo archivo para que el retroceso funcione.

set backspace=indent,eol,start

Y solo corre

source ~/.vimrc

en el mismo terminal para que el cambio tenga efecto inmediato en el mismo shell. No es necesario abrir vi y ejecutar

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

Para mí, tenía la configuración a continuación, sin embargo, el retroceso todavía no funciona.

set backspace=indent,eol,start

Finalmente, encontré que la siguiente línea conducía a este problema.

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

Cuando se elimina esta configuración, la tecla de retroceso funciona bien en el modo de inserción.

Reason: Eso es porque Vim ve CTRL-H como un retroceso, y esta línea se reasigna a neocomplete # smart_close_popup () en el modo de inserción.

Eco
fuente
1

Para mí (servidor Debian, conectado con "Konsole" de otro linux), los problemas con la tecla de retroceso y las teclas de flecha se resolvieron después de desinstalar el paquete vim-tiny e instalar el paquete vim.

jm009
fuente
1
Quizás, estos paquetes instalen diferentes archivos vimrc.
Eugene Yarmash
1

Tuve el mismo problema en Debian 7.8 sobre SSH en urxvt + tmux. Tenía vim y vim-tiny instalados.

La eliminación de vim-tiny solucionó el problema.

lilorox
fuente
1

Muchas veces también es una función del tipo getty seleccionado si uno está usando un cliente SSH como Putty o algo así. Lo más preferible sería utilizar vt100 + ya que es la emulación más estándar.

Ya tenía :fixdelcuál no estaba funcionando. Tuve que quitarlo y reemplazarlo con la primera sugerencia para que funcionara.

HighOnMeat
fuente