VIM: come andare alla riga esatta su Ubuntu


87

Sto usando visu Ubuntu 12.10. Alcuni file sono piuttosto lunghi, quindi quando voglio andare al centro del file, devo scorrere la pagina verso il basso o scorrere verso il basso.

Esiste una scorciatoia VIM per andare a un numero di riga esatto?


@vim esperti. È davvero specifico per Ubuntu- / bash- / Linux (come per i tag OP)? Non sto usando molto vim, ma per i miei usi non ho notato la minima differenza tra Ubuntu / CentOS / Suse / Windows.
Alexander Malakhov

Risposte:


143
:150

ti porterà alla riga 150 in vi

:1500

ti porterà alla riga 1500 in vi

Secondo i commenti potresti provare

150G

per arrivare alla linea 150. che è meno battute di tasto, quindi :150Enter se non sei sicuro di quale linea ti trovi, prova

 :set nu!

notare il:

se vuoi vedere sempre la riga, considera la possibilità di modificare il tuo profilo vim. Più spesso

vi ~/.vimrc

e aggiungi

:set nu! 

e scrivi e smetti

:wq
#or you could use :x

questo può essere fatto al di fuori di vi. Ad esempio, se desidero eliminare la riga 5000 in un file di testo, potrei utilizzare un linguaggio di scripting. Ad esempio, utilizzando sed sarebbe il seguente

sed -i '5000d;' inputFile.txt

per cancellare le righe dalla 10 alla 20 sarebbe

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

notare che -i modificherà il file in posizione. Senza -i andrà allo stdout. Provalo. puoi reindirizzare lo stdout a un file

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

questo potrebbe avere molto da fare qui per te. ciò elimina la riga 5001 in $. Con $ alla fine del file. >> verrà aggiunto a un file. dove come> crea un nuovo file.

se sei curioso di sapere quante righe ci sono in un file potresti voler digitare wc -l inputFile.txt

alcune di queste possono sembrare terribilmente banali, ma se stai provando a modificare un file con 50.000 righe potrebbe volerci un bel minuto per aprirlo e attraversarlo. dove se sai di voler cancellare l'ultima riga puoi usare sed e farlo in una frazione del tempo.

sed può anche cercare e sostituire all'interno di un file. Ma forse anche awk, perl o python potrebbero essere una soluzione praticabile.

ma nel complesso, potresti voler trovare un buon tutorial su vi. esistono migliaia. Consulterei google. Forse ti ritroverai un VIM Cheatsheat.


Nessun problema, ho ampliato un po 'la mia risposta ma. Buona fortuna
matchew

2
inoltre, in vim puoi digitare: n50% e arrivare a metà del file.
Eric Fortis

1
In modalità normale, 150Gfa lo stesso di :150. Non è più veloce ma può essere più facile da ricordare.
romainl

@romainl 150gg fa lo stesso. Entrambi sono davvero più veloci di: 150 <cr>
Randy Morris

@Randy Morris - Sì, è più veloce, ho dimenticato di tenerne <CR>conto.
romainl

14

Altri suggerimenti per vim: in modalità comando

  • H va nella parte superiore dello schermo
  • M va al centro dello schermo
  • L va in fondo allo schermo
  • gg va alla prima riga
  • G va all'ultima riga


6

Da un terminale aperto, in una shell bash, modifica semplicemente il tuo file eseguendo:

$ vi +N yourfile

Dov'è Nil numero di riga.

Per la visualizzazione ( moreo less;):

$ less +N yourfile
$ more +N yourfile

Il segno +indica il comando da eseguire all'inizio . Quindi, se il comando è solo un numero, quindi vi, lesse more, salterà a questo come numero di riga .

Ma puoi anche usare /regexper trovare la prima occorrenza di una stringa o di una regex specifica:

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

3

Un altro consiglio: dato che sei nuovo a vim, correre vimtutorpuò essere molto utile.


6
Non dovrebbe essere solo un commento in quanto non risponde alla domanda specifica?
Brian Rasmussen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.