Aunque no se muy bien cómo titular esta entrada, este es un pequeño truco para desarrolladores. Vamos a tomar como ejemplo C++ y que cada uno lo extienda a su caso particular. Casi siempre en un proyecto el esqueleto de una cabecera para una clase y de su fichero cpp es muy similar, tanto que yo siempre acabo por crearme un «Dummy.h» y un «Dummy.cpp», con esta pinta:

#ifndef _MyProject_DUMMY_HPP_
#define _MyProject_DUMMY_HPP_
#include "Referenced.h"
namespace MyProject {
    class Dummy : public Referenced
    {
    public:
        Dummy();
    protected:
        ~Dummy();
        Dummy & operator= (const Dummy&) { return *this; }
    private:
    };
} // end of MyProject namespace
#endif
//------ y este es el cpp --------------
#include <MyProject/Dummy.h>
namespace MyProject {
} // end of MyProject namespace

El código en si no es lo importante, en lo que hay que fijarse es que si usamos este fichero como plantilla hay mucho «Dummy» que cambiar por el nombre de la nueva clase. Para ello nada más fácil que:

:%s/Dummy/MiClase/g
:%s/DUMMY/MICLASE/g

El primero va bien, el segundo también, pero cuando llevas 15 te hartas de los «:%s», y aquí viene el truco, dejemos que vim haga su faena:

function Dummy()
    let name = expand("%:t:r")
    execute "%s/DUMMY/".toupper(name)."/g"
    execute "%s/Dummy/".name."/g"
endfunction

Se invoca con «: call Dummy()» y hace toda la faena por ti tomando como nombre a reemplazar el nombre del fichero que estamos editando.