Nel suo (ottimo) libro "Pratical Vim", Drew Neil mostra come raccogliere tutte le righe contenenti la parola "TODO" in un registro per usarle in seguito.
Per fare ciò usa semplicemente un comando globale: :g/TODO/yank A
(La maiuscola A
consente di eseguire le linee al registro indicato a
).
Penso che sia un trucco piuttosto interessante, ma devo migliorarlo: sto cercando di inserire il numero della riga prima che sia contenuto. Penso che la soluzione sarebbe quella di ottenere il numero di riga e usarlo nell'ultima parte del comando che ho menzionato prima. Il problema è che non so come ottenere questo numero di riga.
Quindi la mia domanda è: come in un comando globale posso ottenere il numero della linea abbinata e come posso usare questo numero?
Giusto per essere chiari qui è un esempio. Consideriamo questo file:
1 //TODO: Hey this is a todo
2 int main(void){
3 //TODO: and this is another one
4 printf("Hello world");
5
6 return 0;
7 }
Quando scrivo :g/TODO/yank A
e inserisco il contenuto del registro in un file ottengo:
//TODO: Hey this is a todo
//TODO: and this is another one
Quello che vorrei ottenere è:
1 //TODO: Hey this is a todo
3 //TODO: and this is another one
Bonus lo yank include anche il rientro della linea, sarebbe piuttosto bello se potessi rimuoverlo direttamente dal comando globale.
getpos()
egetline()
. Anche quando hai risposto alla domanda bonus ti meriti un biscotto danzante ;)