Mueve el cursor al final del archivo en vim

409

Cuando quiero que el cursor vaya al final del archivo (es decir, al final de la última línea) en Vim, tengo que escribir seis pulsaciones de teclas:

<ESC>G$a- lo que se traduce en ESC+ Shiftg+ Shift4+ aen la distribución de mi teclado.

¿Cómo puedo hacer esto de manera más eficiente?

Como trabajo regularmente en muchas máquinas diferentes, no siempre puedo cambiar .vimrc, por lo que estoy buscando respuestas sin tener que editar o crear ese archivo.

timss
fuente
8
Solo quiero señalar que los comandos que está mostrando deben representarse de la siguiente manera: <esc>G$amuestra el cambio haciendo que la letra sea mayúscula. Y muestra un $cambio en lugar de shift + 4, ya que no importa el teclado, la función de esta tecla ( $) no cambiará, pero si cambia shift + 4, entonces el significado puede cambiar. :)
greduan
3
@Eduan Estoy de acuerdo en general, pero en este caso las pulsaciones de teclas también son relevantes.
Agregué
@Eduan Para la cuestión de la eficiencia, los comandos reales no importan. Las pulsaciones de teclas lo hacen. Y dado que hay grandes diferencias en la distribución del teclado entre idiomas, no sé dónde $está el teclado de EE. UU., Y bien podría ser que para los estadounidenses ingresar el comando $sea ​​solo una pulsación de tecla. Quería mostrar explícitamente que para mí (con un teclado alemán) son dos pulsaciones de teclas.
1
@what IC. Puedo entender eso. Solo quería señalarlo, así que en el futuro ya sabes. :)
greduan

Respuestas:

410

No es necesario ir explícitamente al final de la línea antes de hacerlo a, use A;
Agregar texto al final de la línea [conteo] veces

<ESC>GA

timss
fuente
3
Si desea permanecer en modo normal, intente G)(o <ESC>G)si está en modo de inserción y desea finalizar en modo normal sobre el último carácter). El mismo número de pulsaciones de teclas, pero para terminar en modo normal en lugar de modo de inserción. Encuentro esto útil ocasionalmente cuando quiero ejecutar algún comando normal en la última palabra en lugar de un comando de modo de inserción o editar.
Alejandro
1
@Alejandro Si bien es útil, )avanza las [count]oraciones hacia adelante y, por lo tanto, no irá al final de la línea si, por ejemplo, la última línea es This is a test. Foo bar.. Sin embargo, funcionará para una gran cantidad de código, que a menudo no se considera oraciones y, por lo tanto, llegará al final de todos modos.
TIMSS
Si planea escribir la siguiente línea, <ESC> G orealizará el retorno de carro y lo pondrá en modo de inserción en la siguiente línea (al final del archivo), guardando un par de teclas más.
broc.seib
1
Además, si no desea cambiar al modo de inserción, use G$.
BladeMight
499

Esto es mas rapido. Solo usa esto

:$
karthik
fuente
16
Esto no se mueve a la última columna solo a la última línea
Rajeshwar
66
Si solo desea ir rápidamente al final del archivo y los atajos de teclado están en mal estado, este es el comando correcto. ¡Gracias!
joemar.ct
99
: $ + End lo haría en ese caso.
karthik
1
Esto requiere <ENTER> al final y aún necesita llegar al final de la línea, lo que no lo hace más rápido.
Alejandro
1
: $ hace el truco! yendo al final del archivo como se hizo la pregunta! gracias
Sijan Shrestha
130

Presiona Escy luego presiona: Shift+G

Mohamed Ayoub BENJELLOUN
fuente
3
Esto va al principio de la última línea, no al final del archivo.
Jordan Running
55
esto va al final del archivo para , y también es una combinación de teclas fácil y agradable
Jacob Garby el
G mantiene el número de columna igual (si es posible) y se mueve a la última línea. Jacob probablemente estaba al final de la línea y Jordan al frente cuando ejecutaba el comando.
run_the_race
39

Para empezar, no hay necesidad de regresar. G$lo haré Y está siendo engañoso contando <Esc>y aen la longitud de un comando de modo normal.

Sin embargo, puede usar Ctrl+ Endsi lo desea.

hobbs
fuente
8
esCtrl-END
zmo
No tengo End-Key en mi teclado (si eso es lo que quieres decir).
En realidad, la respuesta de espectáculos TIMSS que lo hice bien para contar <ESC>y a, porque él o ella conocía una forma de reemplazar Shift+$, acon A.
1
@lo que la mayoría de los teclados de las computadoras portátiles hoy en día tienen inicio / fin puestos arriba / abajo / izquierda / derecha junto con Fn si no tienen teclas dedicadas de inicio / fin
phuclv
22

¿Pensé que la pregunta era "Mover el cursor al final del archivo en vim"?

Fin de archivo: Esc+ G
Inicio de archivo Esc+ g(o ggsi ya está en el área de comando)

AlexD
fuente
21

La mejor manera de ir a la última línea del archivo es con G. Esto moverá el cursor a la última línea del archivo.

La mejor manera de ir a la última columna de la línea es con $. Esto moverá el cursor a la última columna de la línea actual.

Así que solo al G$llegar al final del archivo y la última línea.

Y si desea ingresar al modo de inserción al final del archivo, simplemente hágalo GA. Al hacer esto, va a la última línea del archivo e ingresa al modo de inserción agregando a la última columna. :)

greduan
fuente
13

Ir arriba - Doble g

Ir a la parte inferior - Shift+g

fuat
fuente
1
Excelente. Funciona en Mac también.
Bishwas Mishra
11

Si planea escribir la siguiente línea, ESCGorealizará el retorno de carro y lo pondrá en modo de inserción en la siguiente línea (al final del archivo), guardando un par de teclas más.

broc.seib
fuente
6
  • Ctrl + Home = Saltar al inicio del archivo
  • Ctrl + End = Saltar al final del archivo
Gili
fuente
3

Esto es más rápido:

<ESC>GA
cforbish
fuente
55
¿Por qué publicar una respuesta duplicada, especialmente cuando no explica A?
Timss
3

Puede asignarlo a una clave, por ejemplo F3, en .vimrc

inoremap <F3> <Esc>GA
Tim
fuente
2
Si bien es posible, generalmente es una mala idea. En cambio, apunta a la memoria muscular y usa GAo G$.
Timss
Sin embargo, todavía estoy ganando con 1 golpe de tecla :) En una nota más seria, si realmente necesitas algo rápido en vim, aprender a .vimrc es útil.
Tim
También sería bueno tener un ejemplo de mapa completo en lugar de decirle al OP que vaya a buscarlo. Ya que si no puedes encontrarlo, ¿cómo se supone que debe hacer el OP?
FDinoff
1
No estás "ganando" nada, ya que tendrías que alejarte de tu jonrón. Además, no puede usar esto en la configuración de alguien más o incluso vi, si lo usa. Realmente no estás ahorrando tiempo. En todo caso, use C-endsegún lo mencionado por hobbs.
timss
Estoy de acuerdo con los comentarios aquí, pero limpié el mapeo para usted
D. Ben Knoble
0

He estado buscando la forma de mover el cursor al final de una línea y luego editar en un terminal mac, así es como funcionó para mí. Salga de su modo de edición, escriba g_ (eso es 'g' y luego subrayado sin dos puntos en el frente), luego simplemente presione la tecla 'a' para que pueda "agregar" código a sus scripts

Xinyi Xiang
fuente
¿Tal vez estabas buscando A?
D. Ben Knoble
He intentado A pero no funcionó del todo
Xinyi Xiang
eso es extraño, Aes básicamente equivalente a$a
D. Ben Knoble
0

Otra alternativa:

:call cursor('.',strwidth(getline('.')))

Esto puede ser útil si está escribiendo una función. Otra situación sería cuando necesito abrir una plantilla específica y saltar al final de la primera línea, puedo hacer:

vi +"call cursor('.',strwidth(getline(1)))"  notetaking_template.txt

Lo anterior también podría hacerse con

vi +"execute ':normal! $'" notetaking_template.txt

Ver también:

vim - Obtiene la longitud de la línea actual

Sergiy Kolodyazhnyy
fuente
0

Si desea pegar parte del contenido del portapapeles al final del tipo de archivo:

:$ put +

$ ............ last line
put .......... paste 
+ ............ clipboard
SergioAraujo
fuente