VIM: cómo ir a la línea exacta en Ubuntu

87

Estoy usando viUbuntu 12.10. Algunos archivos son bastante largos, así que cuando quiero ir al medio del archivo, tengo que desplazarme hacia abajo o hacia abajo.

¿Existe un atajo de VIM para ir a un número de línea exacto?

Kevin
fuente
@vim expertos. ¿Es esto realmente específico de Ubuntu- / bash- / Linux (según las etiquetas OP)? No estoy usando mucho vim, pero para mis usos no he notado la más mínima diferencia en Ubuntu / CentOS / Suse / Windows.
Alexander Malakhov

Respuestas:

143
:150

te llevará a la línea 150 en vi

:1500

te llevará a la línea 1500 en vi

Según los comentarios, es posible que desee probar.

150G

para llegar a la línea 150, que es menos pulsaciones de teclas, :150Enter si no está seguro de qué línea está intentando

 :set nu!

Observe la :

Si desea ver siempre la línea, considere editar su perfil de vim. Más amenudo

vi ~/.vimrc

y añadir

:set nu! 

y escribe y sal

:wq
#or you could use :x

esto se puede hacer fuera de vi. Por ejemplo, si quiero eliminar la línea 5000 en un archivo de texto, podría usar un lenguaje de programación. Por ejemplo, usando sed sería lo siguiente

sed -i '5000d;' inputFile.txt

para eliminar las líneas 10 a 20 sería

sed -i '10,20d;' inputFile.txt

observe que -i editará el archivo en su lugar. Sin el -i, se apagará estándar. Intentalo. puede redirigir stdout a un archivo

sed '5001,$d;' inputFile.txt >> appenedFile.txt

esto podría tener mucho que hacer aquí para ti. esto elimina la línea 5001 a $. Siendo $ el final del archivo. >> se agregará a un archivo. donde como> crea un nuevo archivo.

si tiene curiosidad por saber cuántas líneas hay en un archivo, puede escribir wc -l inputFile.txt

algo de esto puede parecer tremendamente trivial, pero si está tratando de editar un archivo con 50.000 líneas, vi puede tardar un minuto en abrirse y recorrer. donde si sabe que solo desea eliminar la última línea, puede usar sed y hacerlo en una fracción del tiempo.

sed también puede buscar y reemplazar dentro de un archivo. Pero quizás awk, perl o python también podrían ser una solución viable.

pero en general, es posible que desee encontrar un buen tutorial sobre vi. existen miles. Consultaría google. Quizás encuentre un Cheatsheat VIM.

matchew
fuente
No hay problema, amplié mi respuesta un poco, pero. Buena suerte
matchew
2
además, en vim puede escribir: n50% y llegar al medio del archivo.
Eric Fortis
1
En modo normal, 150Ghace lo mismo que :150. No es más rápido, pero puede ser más fácil de recordar.
romainl
@romainl 150gg hace lo mismo. Ambos son de hecho más rápidos que: 150 <cr>
Randy Morris
@Randy Morris - Sí, es más rápido, me olvidé de tenerlo <CR>en cuenta.
romainl
14

Otros consejos de vim: en modo comando

  • H va a la parte superior de la pantalla
  • M va al centro de la pantalla
  • L va a la parte inferior de la pantalla
  • gg va a la primera línea
  • G va a la última línea
Glenn Jackman
fuente
7

tómese unos minutos y comience a leer este documento. Te recompensa a largo plazo por la eficiencia en la edición, especialmente el archivo de configuración.

Jasonw
fuente
Enlace está ahora muerto
¿Qué hay en una búsqueda en Google
6

Desde una terminal abierta, en un shell bash, simplemente edite su archivo ejecutando:

$ vi +N yourfile

¿Dónde Nestá el número de línea?

Para ver ( moreo less;):

$ less +N yourfile
$ more +N yourfile

El signo +significa comando para ejecutarse al inicio . Entonces, si el comando es solo un número, entonces vi, lessy more, saltará a esto como número de línea .

Pero también puede usar /regexpara encontrar la primera aparición de una cadena o expresión regular específica:

$ less +/Error logfile
$ less -i +/error logfile      # -i Causes less's searches to ignore case
$ vi +/open.*myfile myprog...
F. Hauri
fuente
3

Otro consejo: dado que eres nuevo en vim, correr vimtutorpuede ser muy útil.

autocaravanas
fuente
6
¿No debería ser solo un comentario, ya que no aborda la pregunta específica?
Brian Rasmussen