Al presionar las teclas de flecha se agregan caracteres en el editor vi

143

Cuando traté de usar las teclas de flecha en el modo de inserción en el editor vi , los siguientes caracteres se están insertando en el editor:

  • para obtengo B,
  • para obtengo A,
  • para obtengo D,
  • para obtengo C.

Ayúdame a resolver este problema.

    
pregunta bvb 05.10.2013 - 07:04

11 respuestas

177

Si todavía no tiene un archivo .vimrc en su directorio de inicio, cree uno usando esto:

vim ~/.vimrc

Agregue esta línea al principio del archivo:

set nocompatible

Guarde el archivo y esto debería solucionar el problema. :)

    
respondido por el Gaurav Manchanda 05.10.2013 - 09:23
46

Instalar vim - & gt; Esto solucionará el problema.

sudo apt-get install vim

Hay muchos buenos tutoriales de vim / vi en youtube, o en la web en general. Para su problema, vea aquí

Luego continúe abra archivos como de costumbre :

vi desired-file
    
respondido por el sthysel 21.11.2012 - 09:03
26

Con vi , al hacer clic en i activa el comando para Insertar texto.
Este comando le permite insertar texto en su archivo.
Y a la derecha, al hacer clic:

  • en insertará una "A",
  • en insertará una "B",
  • ...

Hasta desactiva este comando.
Para desactivar un comando en vi : simplemente haga clic en Esc
Y luego obtendrá el uso normal de sus teclas de flecha:

  • para subir,
  • para bajar,
  • ...

FYI, aquí hay algunos comandos vi :
De esta fuente .

:x Devolver salir de vi , escribir el archivo modificado en el archivo nombrado en la invocación original
:wq Volver salir de vi , escribir el archivo modificado en el archivo nombrado en la invocación original
:q Volver salir (o salir) vi
:q! Devuelve quit vi aunque los últimos cambios no se hayan guardado para esta llamada de vi

mover cursor hacia abajo una línea
mover cursor hacia arriba una línea < br> mover el cursor dejó un carácter
mover el cursor hacia la derecha un carácter

u deshacer lo que acabas de hacer; un simple alternar
. rehacer lo que acabas de hacer

i insertar texto antes del cursor, hasta que Esc pulse
I insertar texto al comienzo de la corriente línea, hasta Esc pulsar
a añadir texto después del cursor, hasta Esc pulsar
A añadir texto al final de la línea actual, hasta que Esc pulse
o abra y coloque el texto en una nueva línea debajo de la línea actual, hasta Esc pulse
O abra y coloque el texto en una nueva línea sobre la línea actual, hasta que Esc pulse

r reemplazar un solo carácter debajo del cursor (no se necesita Esc )% cw cambiar la palabra actual con texto nuevo, comenzando con el carácter debajo del cursor, hasta que Esc pulse
x elimine solo carácter debajo del cursor
Nx eliminar N caracteres, comenzando con el carácter debajo del cursor
dw eliminar la única palabra que comienza con el carácter debajo del cursor
C cambiar (reemplazar) los caracteres en la línea actual, hasta Esc pulse
D elimine el resto de la línea, empezando por la posición actual del cursor

dd eliminar toda la línea actual
Ndd eliminar N líneas, comenzando con la línea actual; por ejemplo, 5dd borra 5 líneas
yy copia (yank, cut) la línea actual en el buffer
Nyy copy (yank, cut) las siguientes N líneas, incluida la línea actual, en el buffer
p pegar la línea (s) en el buffer en el texto después de la línea actual

0 (cero) mover cursor al inicio de la línea actual (el que tiene el cursor)
$ mover cursor a punta del cursor de la línea actual
w mover al principio de la siguiente palabra
b mover al principio de la palabra precedente
:0 Devuelve o 1G mueve cursor a la primera línea del archivo
:n Devuelve o nG mueve cursor a línea n
:$ Devuelve o G mueve cursor a la última línea del archivo

/string búsqueda adelante para la aparición de una cadena en el texto
?string búsqueda hacia atrás para la aparición de una cadena en el texto
n mover a la siguiente aparición de cadena de búsqueda
N mover a la siguiente aparición de cadena de búsqueda en dirección opuesta

    
respondido por el Boris 05.10.2013 - 08:52
16

Para desactivar la impresión de letras al presionar las flechas en el modo de edición, puede hacer lo siguiente

vi $HOME/.exrc 

(crea el archivo si no existe) y luego agrega la línea set nocompatible y guarda.

    
respondido por el Aniket Thakur 08.08.2015 - 14:46
11

Hay tres modos en el editor vi, a saber:

  • modo de comando
  • modo de entrada
  • modo predeterminado.

Cuando abre un archivo, se encuentra en modo predeterminado. Ahora, si quiere ir a una posición específica en su texto, simplemente use las teclas de flecha o use h , j , k , l claves. Tenga en cuenta que esto funcionaría solo cuando no haya presionado i (o cualquier otro modo de entrada que ingrese comandos como a , A , I ).

El motivo de 'B' puede deberse a que las teclas de flecha en el modo de entrada no funcionan como teclas de flecha, así que simplemente presione Esc para pasar al modo predeterminado en cualquier momento. Cuando se cambia al modo de entrada, presione i o a , y para navegar solo presione la tecla i y use las teclas de flecha o h , j , k , l .

    
respondido por el ps_cool 21.11.2012 - 08:14
6

Tenía exactamente el mismo problema, pero no solo en mi máquina local, sino también en conexiones mediante masilla en una máquina de sles en una máquina virtual Win7 a través de un receptor de citrix. Tanto el host local como los hosts remotos se muestran después de una reinstalación de Ubuntu que tenía exactamente el mismo problema.

Después de descubrir eso

$ localectl list-keymaps 
Couldn't find any console keymaps.

Causa este extraño comportamiento VI. Instalé el paquete consola-datos que resuelve el problema.

sudo apt-get install console-data
    
respondido por el kitingChris 18.01.2017 - 11:53
3

Todas las explicaciones dadas son un poco extrañas. Tengo vi pero no vim instalado.

Verificación de alternativas: /etc/alternatives/vi & amp; rightarrow; /usr/bin/vim.tiny

Entonces vi es vim.tiny , y usa /etc/vim/vimrc.tiny .

Y en vimrc.tiny , encuentra la siguiente línea:

set compatible

Que es casi lo único en este archivo. Tenga en cuenta que en /etc/vim/vimrc está usando nocompatible .

Así que o bien instale vim, o cambie el archivo vimrc.tiny , o cree su propio ~/.vimrc que debería contener la línea:

set nocompatible
    
respondido por el Gunstick 10.01.2017 - 23:11
1

El editor vi tradicional no reconoce las teclas de flecha (... afair). Hay dos soluciones:

  1. usa vim en lugar de vi
  2. use h, j, k y l para navegar (no puede navegar mientras edita en la vi tradicional por cierto).
respondido por el MadMike 05.10.2013 - 07:51
1

Nota:

Hay buena información en las otras publicaciones, pero ninguna de las publicaciones intentó explicar por qué sucedió este comportamiento. Muchas personas están destinadas a tropezar con esto en el futuro. Además, ¿podría marcar esta pregunta como resuelta, ya que es probable que alguna de las publicaciones anteriores le haya ayudado?

Aquí hay una explicación :

Vi es un editor que lleva funcionando mucho tiempo, con raíces en los sistemas Unix. Es una buena herramienta, pero se ha repetido y ahora hay una mejor. Vim se escribió más tarde y es esa iteración. La gente comúnmente se refiere a vi como 'vim-minimal' y a vim es una versión "mejorada" de vi. Puedes pensarlo así: vi es el núcleo y vim lo expande.

Probablemente cómo descubriste el comportamiento :

Para que haya descubierto este problema, presionó " i " para ingresar al modo insertar y luego usó las teclas de flecha para navegar por la línea correcta y editar punto. Esto es lo que causó su problema inesperado de char.

Solución 1 o 2

1) vi someFile Mientras usa vi , primero mueva al punto de edición, luego ingrese al modo de inserción.

2) vim someFile Simplemente use vim desde el principio.

No puedo dejar de insistir lo suficiente para leer el manual (páginas man) o para usar -h para obtener ayuda. Una vez que se ajuste a los patrones en el caparazón, las páginas man se convertirán en su mejor amigo. Ejemplo: man vi o man vim

Valide que Vim está instalado .

Abre una ventana de la consola y ejecuta:

dpkg --list | grep vim

Si obtienes algo similar a esto, puedes comenzar a usar vim.

~ $ dpkg --list | grep vim
ii  vim         2:7.4.052-1ubuntu3  amd64  Vi IMproved - enhanced vi editor
ii  vim-common  2:7.4.052-1ubuntu3  amd64  Vi IMproved - Common files
ii  vim-runtime 2:7.4.052-1ubuntu3  all    Vi IMproved - Runtime files
ii  vim-tiny    2:7.4.052-1ubuntu3  amd64  Vi IMproved - enhanced vi editor - compact version

Si el indicador de comando regresa sin nada, entonces vim no está instalado. Use los ejemplos a continuación para actualizar sus repositorios y luego instale vim.

sudo apt-get update
sudo apt-get install vim

En caso de que use vi o vim solo cuando busca en Internet cómo solucionar algo y olvida escribir vim , hay una manera de solucionarlo en el futuro. Te advierto que prestes atención. Puedes usar un alias para sobreescribir vi con una referencia a vim para que no importa lo que escribas en el futuro poco frecuente, obtienes vim sin ese "¡Uy!" momento. Siempre puede eliminar un alias más tarde.

Escriba vim .bashrc . Desplácese hasta la línea vacía con solo ~ (o a cualquier otra línea que comience con alias (para que estén agrupados) y luego presione la tecla i para ingresar -insertar- modo. En su propia línea, ingrese lo siguiente:

alias vi='vim'

Presione Esc y luego escriba :wq . Ahora necesita volver a cargar el archivo. Escriba source .bashrc Cualquier otro shell que se abra después de realizar estas ediciones cargará automáticamente el archivo .bashrc.

    
respondido por el D75 30.10.2016 - 05:20
1

Esto también puede deberse a la variable TERM ; configúrelo, por ejemplo, de esta manera:

 export TERM=xterm
    
respondido por el Jasper Nuyens 07.07.2017 - 15:54
1

En algunos sistemas, la opción nocompatible no está disponible, o puede no solucionar el problema si un complemento interrumpe la funcionalidad de la tecla de flecha. Aquí hay una solución alternativa ...

Edite el archivo .exrc para incluir las siguientes líneas:

map! ^[OA ^[ka
map! ^[OB ^[ja
map! ^[OC ^[la
map! ^[OD ^[ha

O, si el problema solo existe en modo normal, puede cambiar a nmap y omitir el siguiente a , de la siguiente manera:

nmap! ^[OA ^[k

y así sucesivamente.

Aquí están las combinaciones de teclas necesarias para producirlas (mostrando solo la primera):

map! <CTRL-V><Up-Arrow> <CTRL-V><ESC>ka

Esto escapa al modo de edición, se mueve en la dirección deseada y vuelve a entrar en el modo de edición. Esto es necesario para superar Vi leyendo la secuencia de escape como una secuencia de literal & lt; ESC & gt; & lt; O & gt; & lt; A & gt ;, etc.

Fuente: enlace

    
respondido por el Dominic Comtois 08.06.2017 - 04:33

Lea otras preguntas en las etiquetas