retroceso en modo de inserción que no borra caracteres

10

Soy nuevo en vi , de hecho, he comenzado a aprender vi desde hoy y me he quedado atascado en el comportamiento de la tecla de retroceso . En realidad, cuando encendí vi en mi Ubuntu 12.04 por primera vez, mi tecla de retroceso funcionaba normalmente, pero después de eso comenzó a comportarse de manera extraña. Cada vez que presiono la tecla de retroceso en el modo de inserción, solo se mueve un lugar hacia la izquierda en lugar de borrar el carácter. ¿Cómo puedo recuperar la funcionalidad de retroceso predeterminada? Tenga en cuenta que no quiero instalar vim o establecer nocompatibilty.

Saprativa Bhattacharjee
fuente
55
Ese es el comportamiento vi tradicional. Si tienes la opción de configurar la no compatibilidad, entonces ya estás usando vim.
Stéphane Chazelas
No sé si vi está instalado en Ubuntu. vi en el mundo Linux en mi experiencia es solo un enlace simbólico a vim. Si quieres aprender vi real, instala nvi o hairloom project vi.
Predrag Punosevac

Respuestas:

6

A veces, el vicomando es un alias para vimy cuando se llama como vihabilita su modo vi.

Incluso en el modo tradicional, la retroceso elimina el carácter, pero no lo muestra como eliminado inmediatamente. (Después de presionar ESC, los caracteres desaparecen).

Supongo que tiene que elegir entre usar el vique viene con el comportamiento descrito o usar el vimque puede hacerlo de la manera esperada.

michas
fuente
9
  1. Verifique si realmente está usando simple vivía

    $ vi --version | head -n 1

    Esto da en mi máquina (Debian 7)

    VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Feb 10 2013 02:27:59)

    Se puede hacer que vim se comporte más como vi. Esto se puede hacer dando el comando en vilugar de vimdesde la línea de comandos, donde visolo hay un enlace simbólico vim, en cuyo caso vim se abre en modo vi. Puedes verificar esto con :set compatible?.

  2. Como se ha mencionado por la respuesta anterior, el efecto del retroceso se convierte en accesibles solamente después de dejar en insert modecuando set compatibleestá habilitado.

Nota: En el modo compatible con vi, no puede retroceder sobre el texto que se ingresó previamente (antes de ingresar insert mode) o las eol o sangría en insert mode. ver :help 'bs'

    'backspace' 'bs'        string  (default "")
                            global
                            {not in Vi}
    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.

    When the value is empty, Vi compatible backspacing is used.
    For backwards compatibility with version 5.4 and earlier:
    value   effect
      0     same as ":set backspace=" (Vi compatible)
      1     same as ":set backspace=indent,eol"
      2     same as ":set backspace=indent,eol,start"

Pruebe las diferentes configuraciones para comprender su significado: ingrese caracteres / saltos de línea y sangría en el modo de inserción, salga y vuelva a ingresar al modo de inserción y luego intente retroceder.

Los usuarios que no están familiarizados con el comportamiento vi y no insisten en usar vi simple (no recomendado de todos modos) deberían hacerlo :set backspace=indent,eol,start. Afaik en Debian generalmente hay un archivo de configuración de todo el sistema instalado con esta configuración.

Puede obtener la configuración actual a través de :set bs?.

Hotschke
fuente
5

Cree un nuevo archivo en el directorio de inicio del usuario llamado .vimrc si aún no está allí. Aquí crearemos y editaremos al mismo tiempo con vi

sudo vi ~/.vimrc

Agregue los siguientes comandos, que incluyen desactivar el modo de compatibilidad y la funcionalidad de borrado de la tecla de retroceso:

set nocp
set backspace=indent,eol,start

Guardar y salir del archivo usando

:wq

Desactivar el modo de compatibilidad permite el uso de teclas de flecha a las que estamos acostumbrados los viejos vi.

Como sudo'd al crear el archivo, la propiedad del archivo probablemente será root. Puede transmitir el archivo al usuario.

En mi caso, esto fue para una frambuesa pi, por lo que el usuario y el grupo es pi:

chown pi:pi ~/.vimrc

¡Ahora enciende vi otra vez y disfruta!

recurse
fuente
1
set nocphizo el truco para mí
Louis M
0

simplemente coloque en su ~/.zshrc

bindkey "^?" backward-delete-char
jhvaras
fuente