¿Cómo me muevo al final de línea en Vim?


Sé cómo moverme generalmente en modo de comando, específicamente, saltando a las líneas, etc. Pero, ¿cuál es el comando para saltar al final de la línea en la que estoy actualmente?

Author: Vincent Scheib, 2008-09-20

14 answers

Solo el $ (signo de dólar) clave. Puede usar A para pasar al final de la línea y cambiar al modo de edición (Anexar).

El opuesto de A es I (modo de inserción al principio de la línea), como un aparte.

 1789
Author: dvorak,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-24 16:25:30

Como mucha gente ha dicho:

  • $ te lleva al final de la línea

Pero también:

  • ^ o _ te lleva al primer carácter sin espacios en blanco de la línea, y
  • 0 (cero) te lleva al principio de la línea incl. espacio en blanco
 275
Author: Rob Wells,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-08 20:12:21
  • $ se mueve al último personaje de la línea.
  • g _ va al último carácter sin espacios en blanco.

  • g $ va al final de la línea de pantalla (cuando una línea de búfer se envuelve a través de varias líneas de pantalla)

 119
Author: Paul Ruane,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-21 10:55:57

La pregunta principal-fin de línea

$ va al final de la línea, permanece en modo de comando

A va al final de la línea, cambia al modo de inserción

Inversamente-inicio de línea (técnicamente el primer carácter que no es un espacio en blanco)

^ va al inicio de la línea, permanece en modo de comando

I (i mayúscula) va al inicio de la línea, cambia al modo de inserción

Más-inicio de la línea (técnicamente el primera columna independientemente del espacio en blanco )

0 (cero) va al comienzo de la línea, permanece en modo de comando

0i (cero seguido de i minúscula) va al inicio de la línea, cambia al modo de inserción

Para aquellos que comienzan a aprender vi, aquí hay una buena introducción a vi listando los comandos vi lado a lado al típico movimiento del cursor del editor GUI de Windows y las teclas de acceso directo.

Editor Vi para usuarios de Windows

 43
Author: ap-osd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-24 05:01:52

Si su línea actual se envuelve alrededor de la pantalla visible en la siguiente línea, puede usar g { para llegar al final de la línea screen .

 37
Author: Commodore Jaeger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 22:49:56

El signo del dólar: {

 12
Author: David Singer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 21:20:26

La ventaja de la tecla 'End' es que funciona tanto en el modo normal como en el modo insert.

' works' solo funciona en modo normal/comando, pero también funciona en el editor vi clásico (es bueno saber cuando vim no está disponible).

 12
Author: Diastrophism,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-19 22:05:58

En muchos casos, cuando estamos dentro de una cadena estamos encerrados por una comilla doble, o mientras escribimos una declaración no queremos presionar escape e ir al final de esa línea con la tecla de flecha y presionar el punto y coma(;) solo para terminar la línea. Escribe la siguiente línea dentro de tu archivo vimrc:

imap <C-l> <Esc>$a

¿Qué dice la línea? Asigna Ctrl + l a una serie de comandos. Es equivalente a presionar Esc (modo de comando), $ (end of line), a (append) at una vez.

 10
Author: Pramod,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-05 14:29:11

También tenga en cuenta la distinción entre línea (o quizás línea física) y línea de pantalla. Una línea termina con el carácter Final de línea ("\n"). Una línea de pantalla es lo que sucede que se muestra como una fila de caracteres en su terminal o en su pantalla. Los dos se separan si tiene líneas físicas más largas que el ancho de la pantalla, lo cual es muy común al escribir correos electrónicos y cosas así.

La distinción se muestra en los comandos de fin de línea como bien.

  • $ y 0 mover al final o al principio de la línea física o párrafo, respectivamente:
  • g$ y g0 ir al final o al principio de la pantalla de la línea o párrafo, respectivamente.

Si siempre prefiere este último comportamiento, puede reasignar las claves de esta manera:

:noremap 0 g0
:noremap $ g$
 10
Author: loevborg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-23 06:58:24

Presione A para entrar en modo de edición comenzando al final de la línea.

 8
Author: brian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-04 12:38:01

O está la respuesta obvia: use la tecla End para ir al final de la línea.

 8
Author: davr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-04 12:52:56

Posiblemente sin relación, pero si desea iniciar una nueva línea después de la línea actual, puede usar o en cualquier lugar de la línea.

 6
Author: graywh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-01 18:47:03

La opción más fácil sería introducir $. Si está trabajando con bloques de texto, puede apreciar el comando { y } para mover un párrafo hacia atrás y hacia adelante, respectivamente.

 3
Author: paranza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-23 06:56:32

Estaba acostumbrado a Home/End llevándome al inicio y al final de las líneas en modo de inserción (de uso en Windows y creo que Linux), que Mac no admite. Esto es particularmente molesto porque cuando estoy usando vim en un sistema remoto, tampoco puedo hacerlo fácilmente. Después de un doloroso ensayo y error, se me ocurrieron estas .vimrc líneas que hacen lo mismo, pero vinculadas a Ctrl-A para el inicio de la línea y Ctrl-D para el final de la línea. (Por alguna razón, Ctrl-E supongo que está reservado o al menos I no pude encontrar una manera de atarlo.) Disfrutar.

:imap <Char-1> <Char-15>:normal 0<Char-13>
:imap <Char-4> <Char-15>:normal $<Char-13>

Aquí hay un buen gráfico para los códigos de caracteres de control ASCII aquí para otros también:

Http://www.physics.udel.edu / ~watson/scen103/ascii.html

También puedes hacer Ctrl-V + Ctrl -, pero eso no pega tan bien en lugares como este.

 2
Author: Marcus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-02 22:00:03