remove nnoremap vim vi backspace keymapping

nnoremap - vim key mapping



vim retrocede hojas ^? (13)

En Vim, cuando backspace tecla de backspace en el modo de insert , sale ^? carácter y no elimina el carácter que se supone debe eliminar.

Tengo lo siguiente en mi .vimrc

syntax on set number set expandtab set incsearch set nocompatible set backspace=indent,eol,start fixdel

Esto sucede en el modo comando también. Cuando escribo W incorrectamente en lugar de w para guardar, backspace tecla de backspace y me da lo siguiente:

:W^?

¿Alguna idea sobre qué está mal y cómo solucionarlo?

ACTUALIZACIÓN: antes de publicar esta pregunta en SO, realicé una búsqueda básica en Google e intenté con todas las sugerencias desde la primera página del resultado de la búsqueda pero sin éxito.

@strcat Estoy usando vim versión 7.0.237, consola KDE 1.6.4, máquina Linux 2.6.18 x86_64.

@graywh wrt cat -v, para borrar, obtengo ^[[3~ y para el retroceso, obtengo ^? .

La salida de stty -a es la siguiente

speed 38400 baud; rows 38; columns 194; line = 0; intr = ^C; quit = ^/; erase = ^H; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany -imaxbel iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke


De la http://vim.wikia.com/wiki/Backspace_and_delete_problems , pasé a leer :help :fixdel it sugiere esto:

if &term == "termname" set t_kb=^V<BS> fixdel endif

Donde "^ V" es CTRL-V y "" es la tecla de retroceso
(¡no escriba cuatro caracteres!). Reemplazar "nombre de término"
con tu nombre de terminal

Para mí, el fixdel hace que el retroceso funcione como eliminar. Mi primer error también fue hacer el retroceso CTRL-V en gvim, hacer en el sistema que no puede hacer que la clave funcione correctamente para que pegue la tecla de retroceso que ve la sesión problemática.

Ahora tengo en mi .vimrc :

if &term == "xterm-256color" set t_kb=^? endif


En FreeBSD con CSH debes reemplazar esto en tu .cshrc:

bindkey "^W" backward-delete-word

Con este :

bindkey "^?" backward-delete-word


En Mac, si está utilizando Terminal, vaya a Preferencias -> Perfiles -> Avanzado, luego seleccione "Eliminar Envía Control-H"



Prueba agregar:

noremap! <C-?> <C-h>

a su ~/.vimrc .

Esto mapas C-? para retroceder, y funcionó para mí.


Pruebe ctrl + del / ctrl + retroceso o alt + del / alt + retroceso , no puedo recordar cuál, pero creo que hará el truco para usted.

Si eso no funciona intente shift + backspace / del . Me encontré con este problema antes, hay una tecla combinada que puede presionar para enviar el código correcto para eliminar.



Tenía exactamente el mismo problema, excepto que Ctrl + H no funcionaba para mí. stty ajustes stty también están bien. Solo quiero mencionar mi entorno, si alguien tiene los mismos problemas:

  • Usando cygwin con xterm, bajo X, por supuesto :)
  • Ssh''ed a RHEL6.4-> bash-> tmux-> vim

¡Después de agregar fixdel a .vimrc funciona! Todas las soluciones anteriores no funcionaban para mí.


Tuve el mismo problema donde vim retrocede hojas ^? , mientras que en la línea de comando funcionó correctamente.

Esto es lo que funcionó para mí, usando el mapeo vim:

In .vimrc, type: imap ^? ^H

Esto asignará CTRL-H (que es el retroceso predeterminado en vim) a la tecla de retroceso. Espero que ayude.


Tuve este problema y encontré la siguiente configuración en mi .vimrc:

:set t_kb=^H

Eliminar esa línea resolvió el problema.


Una buena solución para este problema es establecer la configuración "Terminal> Teclado" para asignar la tecla de retroceso a "Control-H" en PuTTY; Esto es si está usando PuTTY y experimenta el "^?" problema al presionar la tecla Retroceso.

He creado un artículo sobre esto aquí:

https://alvinbunk.wordpress.com/2017/08/23/vi-or-vim-using-backspace-inserts/

¡Gracias a @ j03m por la sugerencia!


poner stty borrar ^? en tu .bashrc

Ejecute su .bashrc

ejecutar comando: stty -a

speed 38400 baud; rows 48; columns 157; line = 0; intr = ^C; quit = ^/; ***erase = ^?***; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8 opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

El borrado ya se cambiará con un nuevo valor ^? y tu retroceso funcionará ahora.


^? es el carácter de borrar; el carácter de retroceso es ^H Solo uno de estos es reconocido por su terminal como "borrar", y esto está determinado por la configuración del terminal, stty . (bash y otros proyectiles entienden esto como un problema y hacen cosas especiales para reconocer ambos)

Si su emulador de terminal (ssh, putty, xterm, lo que sea) no está de acuerdo con la configuración de su terminal, entonces verá este comportamiento. Por lo general, es correcto de manera predeterminada, pero muy a menudo las personas ponen comandos stty en su .bashrc que rompe las cosas.

Es probable que tengas algo así como stty erase ^H en tu bashrc. Si lo haces, deshazte de él, o cambia la configuración de tu terminal para tener un retroceso envía ^H lugar de DEL ( ^? )

También puedes arreglar esto con mapeos vim, pero eso está ignorando el problema básico.