Domanda

Sono un C # sviluppatore che ha da poco deciso di ampliare la mia conoscenza degli strumenti a mia disposizione. Il primo strumento che ho deciso di imparare è Vi / Vim. Tutto sta andando bene finora, ma ci sono un paio di domande che non riesco a trovare la risposta a:

  1. Diciamo che ho voluto tirare una serie di linee. So che ci sono molti modi per farlo, ma mi piacerebbe farlo con il numero di riga. Ho pensato che sarebbe stato simile a come i comandi sostitutivi funzionano, qualcosa come 81,91y. C'è un modo per fare questo?

  2. Sono un po 'confuso sul comando g in modalità normale. Sembra di fare una miriade di cose e non posso davvero determinare ciò che il comando g fa al suo interno. Sono confuso su se o non si tratta di un comando di movimento o di una sorta di "catch all" per altri comandi attraversava modalità normale. Qualcuno può spiegare questo o indicarlo ad un riferimento che dà una buona spiegazione del comando g?

È stato utile?

Soluzione

linee Yank 81-91

:81,91y<enter>

Se le dita non piace trovare le chiavi : e ,, questo dovrebbe funzionare così (vai alla riga 81, tirare 11 righe)

81gg11yy 

Il mio unico uso di g è 5gg. Per passare alla linea 5. 22gg: Linea 22. Come ha detto Jimbo, è davvero solo un modificatore per alcuni altri comandi.

Per completezza, ( http://vim.wikia.com/wiki/Power_of_g ) spiega un sacco di come g funziona in modalità di comando.

Altri suggerimenti

È anche possibile copiare le linee di corrente alla posizione del cursore attuale utilizzando 'T'.

:81,91t.<enter>

In questo modo incollare le linee 81-91 sotto la linea del cursore.

Ho imparato questo da http://vimcasts.org , che è una risorsa eccellente su VIM.

mi piace anche di utilizzare l'opzione numero di riga rispetto di vim che significa che posso basta inserire:

:-10,-7ya a

per tirare il testo in nome del buffer a.

NB. Specifica di un aggiungerà quello che stai tirando al contenuto corrente di tampone a.

Non dimenticare è anche possibile copiare blocchi di testo e spostare blocchi di testo intorno pure con i comandi simili:

:-10,-7co .

mezzi copiare le quattro righe di testo 10 righe sopra a sotto la linea corrente, e

:-10,-7mo .

significa spostare le quattro righe di testo 10 righe sopra a sotto la linea corrente.

Il comando G va a un certo numero di riga, se è accompagnato da un valore di conteggio. 81G si mette sulla linea 81.

Il comando y può essere combinato con un movimento, come G. Quindi, per tirare tutto fino linea 91 è possibile utilizzare y91G.

Insieme si ottiene:

81Gy91G

Vai alla riga 81, poi strattonare mentre andando alla linea 91.

g non fa nulla da sola. E 'uno dei un paio di meta-comandi che tiene un mazzo di comandi sorta-indipendenti.

z è ancora un altro comando del genere.

:help index di Vim descrive g come:

|g|             g{char}            extended commands, see |g| below

Scorrere verso il basso (o :help g) per una lista.

La soluzione migliore sarebbe quella di inserire "modalità visuale", premendo v. E dopo aver selezionato le linee basta copiare premendo y. Quindi incollare linee copiate premendo p.

Oltre a :91,96y a che strappa (y) linee da 91 a 96 nel registro a, (incollato con "ap), le linee tirò possono essere accluso al registro con:

:91,96y A

vale a dire. la capitalizzazione del registro A provoca un'operazione apposizione in a registro anziché una sovrascrittura. La capitalizzazione del registro funziona sempre così, ad esempio, :let @A=';' aggiunge un ; per registrare a.

Utilizzando più (+) o meno (-) riferimenti linee relative alla posizione del cursore:

:-10,+10y b

vale a dire. sarebbe tirare (y) 21 linee intorno alla posizione corrente del cursore e metterli nel registro b.

L'assenza di ingresso realtà rappresenta la posizione corrente del cursore pure, che significa che questo:

:-5,y a

restituirebbe il testo da 5 linee di cui sopra per la posizione corrente del cursore in a tampone chiamato, e:

:,+5y a

restituirebbe 5 linee dopo la posizione corrente del cursore nel buffer a.

Nota: Se si dispone di una macro in un tampone a è stato appena sovrascritto dal strattone precedente, come i registri cancellare e riscrivere i registri macro sono in realtà la stessa cosa. È per questo che, per coincidenza, è possibile incollare una macro, modificarlo, e poi tirare indietro in esso del registro. Io personalmente uso lettere raggiunte dalla mia mano sinistra per yankee, e lettere raggiunti dalla mia mano destra per le macro.

Moving blocchi di testo intorno, assomiglia a questo:

:+10,+13m.

con il quale si muovono le quattro linee posizionati 10 linee prima del cursore, al di sotto della linea corrente.

Addendum

ya

Ho già confuso in :91,95ya a di essere in qualche modo sinonimo di ya{motion} in cui il movimento è stato fornito da 91,95. Questo non è corretto e la "a" in ya è completamente inutile. In mia difesa, il mio help yank non comunicare che ya è una possibile alias yank.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top