vi riga di comando, vai a riga e colonna


17

Ho mescolato l'uso di emacse vi( vim) per molto tempo. Ognuno di essi ha il suo vantaggio. Analizzo l'output degli errori da una compilazione come processo e ottengo un numero di riga e colonna ma posso usare solo emacsper andare direttamente a una riga e colonna:

emacs +15:25 myfile.xml

con viho solo il numero di riga (secondo la pagina man)

vi +15 myfile.xml

C'è un'opzione per posizionare il cursore su un modello ( vi +/pattern myfile.xml) che non ho mai avuto modo di lavorare. Ma ciò non mi aiuterebbe in quanto il modello non è sempre la prima occorrenza nel file.

Come posso iniziare in vimodo che vada alla colonna 25 alla riga 15 del mio file? Posso fare qualcosa con l' -copzione?


3
Dal momento che si contrassegnati vim, avete considerato il quickfixsistema, che gestisce il compilatore da dentro vim, analizza l'output di errore, compila un elenco di errori (navigare con :cp, :cn, :clcomandi), e posiziona il cursore al primo?
Casuale 832

Se apri un file in vi e digiti :15, salterà alla riga 15 .. Spero che questo ti aiuti
codice ninja

Risposte:


17

Puoi usare:

vi '+normal 15G25|'  myfile.xml

2
spiegazione: la maggior parte dei comandi (cioè la maggior parte delle lettere) in vi può essere preceduta da un numero (o intervallo) per modificare il suo comportamento predefinito o per ripeterlo (o applicarlo su un intervallo specifico). All'interno di vi, in modalità comando, puoi fare 15Gper andare alla riga 15 e 25|per andare alla colonna 25. E Christa mostra come fare lo stesso dalla riga di comando.
Olivier Dulac,

7

Con il plug-in file-line , puoi semplicemente aggiungere riga e colonna al nome del file, sia quando invochi Vim che all'interno con comandi come :edit:

vim myfile.xml:15:25

Buono a sapersi, esiste, ma penso che userò una risposta che non richiede un plug-in aggiuntivo
Dominique,

@Dominique Puoi anche vim myfile.xml +15remare senza un plugin, ma non per quanto ne so
colonna

5

solo per divertimento c'è -c 'normal 14j24l'che ti metterà sulla linea 15 personaggio 25


4

Non conosco l' -copzione, ma dovresti essere in grado di fare:

vi '+cal cursor(15,25)' myfile.xml

(assicurati di citare a causa della parentesi ())


cursor()usa l'indice di byte per la colonna, ma di solito è un conteggio dei caratteri.
Ingo Karkat,

@IngoKarkat Importa davvero? Il testo è UTF-8.
Dominique,

2
È importante per i caratteri non ASCII, che sono rappresentati da più di un byte. Inoltre, una scheda e i caratteri di controllo di solito occupano più di una colonna di visualizzazione.
Ingo Karkat,

2

Vale la pena notare:

-c command 

Esegui il comando ex dato all'avvio. È ammessa una sola opzione -c per vi ; Vim accetta fino a 10. Una versione precedente di questa opzione +command, è ancora supportata.

L' +commandha lo stesso singolo ex commandlimitazione quando si utilizza vi.

Il +/patternè limitata a un comando con vi.

(tratto da Vim ed ex editore )


1

Puoi aggiungere il seguente codice al tuo vimrc, quando torni al tuo file, torna automaticamente alla vecchia posizione:

if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif
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.