2010-11-11 8 views
16

Cuando uso VIM en el terminal de mi máquina local (Mac OS X Snow Leopard), la tecla Eliminar es realmente retroceso (es decir, retroceso destructivo).¿Cómo puedo reparar mi clave de eliminación en VIM sobre ssh? (Mac OS X)

Cuando SSH en un servidor en particular, por alguna razón, es eliminar normal (es decir, eliminar el carácter bajo el cursor).

¿Cómo puedo cambiarlo para que sea coherente? Intenté una docena de soluciones, pero nada parece funcionar.

Al marcar la casilla "Eliminar envía Ctrl-H" en Preferencias de Terminal-> Avanzado no funciona, este es un espacio no destructivo.

He intentado alrededor de cien asignaciones de teclas diferentes en VIM, sin éxito.

Curiosamente, la clave funciona como se esperaba cuando estoy escribiendo comandos en VIM (por ejemplo, : <something>) - solo se estropea cuando estoy editando el texto real. ¿Algunas ideas?

Respuesta

1

Trate de añadir

set <Del>=<C-v><Del>

a la vimrc en la máquina objetivo. Aquí debe escribir < C-v ><Del> mientras inicia sesión en la máquina de destino. Si esto no funciona, marque verbose imap <Del>: esto le dirá si algún complemento ha reasignado <Del> en el modo de inserción.

+0

Hola ZyX, intenté esto pero no ir. Cuando toco termino con un comando que parece ": establecer = ^?". Lo ingresé tanto en la línea de comando en VIM como en mi .vimrc; también intenté configurar de la misma manera, pero nada hace ninguna diferencia en absoluto. verbose imap y verbose imap ambos dicen "no se encontró el mapeo". Muy frustrante ya que, como mencioné, la clave funciona como debería (como retroceso destructivo) cuando estoy escribiendo el comando VIIM en el indicador:; simplemente sale mal en el documento real. – Aeonaut

+0

@Aeonaut muy extraño, ya que puedo hacer '' trabajo como '' con 'set = = '. En todos mis terminales '' envía "^ [[3 ~", pero vi terminales donde envía '^?'. ¿Qué quiere decir con «retroceso destructivo»? Tal vez deberías probar 'inoremap cl' (utilizo esta secuencia para eliminar el carácter anterior en el plugin de transliteración, funciona independientemente de las opciones' backspace' y 'delcombine'). Pruebe también el comando ': fixdel'. – ZyX

7

par de ideas para tratar:

  • En el archivo .vimrc en el servidor remoto, añada esta línea:

    set term=linux 
    
  • En el archivo .bash_profile (o lo que corresponde a su caparazón de opción) en el servidor remoto:

    stty erase ^H 
    

    Nota: para hacer este trabajo correctamente, debe escribir ctrl - v, entonces ctrl - h para escribir el carácter ^H.

    Además, asegúrese de que "Delete sends Ctrl-H" esté marcado en las preferencias de su Terminal.

3

Prueba esto: http://www.alecjacobson.com/weblog/?p=295

He arreglado el problema cambiando la configuración de mi Terminal.app. En Terminal> Preferencias, elija Avanzado. Marque "Eliminar envía Ctrl-H". Ahora, vi y vim deberían entender la clave de eliminación de forma más intuitiva.

Nota: Asignar la tecla "eliminar" en mi archivo vimrc parecía ser probablemente la forma correcta de hacerlo, pero eso es un montón de problemas. ¿Hay alguna razón para no hacerlo de esta manera?

13

Esto funcionó para mí:

:set backspace=indent,eol,start 

No estoy seguro exactamente lo que hace, sino que aparece como una posible solución here y here. Encontré esta línea en un archivo vimrc distribuido con Ubuntu donde el comportamiento de la tecla mac "borrar" (también conocida como la tecla "retroceso") funciona como se espera sin ninguna otra configuración.

El comportamiento que estaba experimentando era un sonido de campana (sin caracteres borrados) al presionar la tecla mac "borrar" (también conocida como la tecla "retroceso") en el modo de inserción. Estoy usando una versión compilada de vim 7.3 en "amazon linux" sobre ssh desde un mac. Al presionar <ctrl-v><delete> cuando estaba en modo insertar, se obtuvo^?.