editor de Unix vi: mapeo ^ J

1

Estoy leyendo el libro "learning vi editor" (linda lamb & arnold robbins sexta edición). Página 115, el libro tiene un comando como este:

:map ^J xyz

La parte xyz en sí no importa aquí, mi problema es hacer la ^Jparte.

He intentado ctrl+ V ctrl+ j( ctrl+ vse puede usar para escapar de Enter, por ejemplo) y ctrl+ jdirectamente

En ambos casos no funciona.

Estoy usando el editor vi dentro de FreeBSD 11.0, no es el vim (vi mejorado).

----- Editar -----

Vídeo:

https://vimeo.com/212400468

00:05 - mapee ctrl + K para hacer dd (borrar toda la línea)

00:19 - intenta hacer lo mismo con ctrl + J, pero no funciona porque ctrl + J activa una tabla.

00:25 - inténtalo de nuevo con ctrl + V ctrl + J. Además, no funciona, desencadenando una tabla.

00:33 - prueba el mapa exactamente "^ J"

00:44 - prueba con ctrl + J y no funciona como se esperaba. Funciona escribiendo la secuencia "^ J".

usuario2865249
fuente
1
Hm. Yo esperaría que fuera así ctrl+v ctrl+j. ¿Has probado caret j exactamente cómo se ve?
zondo
Hola zondo He editado la publicación insertando un video que incluye su sugerencia.
user2865249

Respuestas:

2

Eso en realidad parece ser un error en el libro. El ejemplo es seguido por este comentario:

En el ejemplo anterior, aunque ^Jes un comando vi (mueve el cursor una línea hacia abajo), esta tecla es segura de asignar porque es realmente lo mismo que el jcomando. Hay muchas teclas que realizan las mismas tareas que otras teclas o que rara vez se usan. Sin embargo, debe estar familiarizado con los comandos vi antes de deshabilitar audazmente su uso normal al usarlos en las definiciones de mapas.

La inferencia habitual para ^Jes controlJ. Pero ninguno de los vi mencionados en la sexta edición permitió insertar un control literal / J en el texto porque ese es el final de línea para sistemas tipo Unix (vim le dará un ^@carácter nulo cuando intente escapar del control / J, los otros editores ignoran eso). Un " " literal^J no funciona con el comentario, porque esos caracteres no son un comando vi .

Puede hacer que el " " literal^J funcione, por supuesto. Pero ese no era el punto del ejemplo. Probablemente el autor pretendía algún otro personaje interesante y lo cambió por cualquier razón.

Thomas Dickey
fuente