Come mostrare temporaneamente un'istantanea di un file, nascondendo i commenti e la riga vuota?Istantanea di una parte di un file in Vim: nascondi i commenti e le righe vuote
Lo scopo sarebbe quello di ottenere una cattura di una funzione C++ (ad esempio), in una pagina densa di formazione.
Un modo per farlo è quello di utilizzare il comando globale per filtrare le righe di commento
:g!/\/\/
ma poi l'evidenziazione della sintassi e spostare i controlli scompaiono.
La funzione di piegatura di Vim è un modo per eseguire il lavoro, ma riduce solo diversi commenti consecutivi a una singola riga visivamente invadente.
In ogni caso, pieghevole è ancora utile per nascondere i commenti lunghi C-come, ad esempio con:
:set foldmethod=marker
:set foldmarker=/*,*/
ma non sono riuscito a piegare facilmente sia C (/ ... /) e C++ (// ...) commenti in un singolo comando.
Il trucco ideale sarebbe:
- nascondere (non solo piega in una sola riga) commenti e le righe vuote,
- forse indicare le linee nascoste con un personaggio sulla prima colonna ,
- gestire entrambi i commenti C e C++,
- preservando l'evidenziazione della sintassi,
- e, idealmente, la capacità di browse il codice,
- consente una facile Revert di tornare alla "commentato" vista.
così da trasformare il seguente codice:
/** Let say hello
* and do not forget anybody
*/
void hello(int arg)
{
// OMG an hello world!
std::cout << "hello" << std::endl;
} // where is the world?
nelle seguenti buffer:
void hello(int arg)
{
std::cout << "hello" << std::endl;
}
L'aggiunta di un metodo per eliminare righe vuote in questo singolo comando farebbe un lavoro sufficientemente buono. Ma qualcosa come aggiungere "| \ s * \ n" nella parte corrispondente non sembra funzionare, qualche idea? – nojhan
@nojhan Ho modificato il comando per rimuovere le newline, l'ho testato e ha funzionato. Ha l'effetto di rimuovere tutte le righe vuote, vedrò se riesco a pensare a un modo per rimuovere solo le righe vuote risultanti dalla rimozione dei commenti. – cledoux
@nojhan Ho aggiornato di nuovo il post con un comando che dovrebbe funzionare ora. Rimuoverà le nuove linee risultanti dalla rimozione dei commenti, ma lascerà tutte le altre righe vuote. – cledoux