CLion 2023.3 Help

File templates

File templates are specifications of the default contents for new files that you create. Depending on the type of file you are creating, templates provide initial code and formatting expected in all files of that type (according to industry or language standards, your corporate policy, or for other reasons).

CLion provides predefined templates for all supported file types suggested when you create a new file. The set of suggested file types depends on the module and configuration, as well as the properties of your current location in the Project tool window. For example, CLion will not suggest creating a C++ file outside of the C++ source or test directories.

Manage and configure file templates

  • Press Ctrl+Alt+S to open the IDE settings and then select Editor | File and Code Templates.

File templates settings

By default, the list of templates contains only predefined templates provided by CLion. Some of them are internal, which means they cannot be deleted or renamed. CLion shows the names of internal templates in bold. The names of templates that you modified, as well as custom templates that you created manually, are shown in blue.

Templates for C/C++ and CMake files

  1. In Settings | Editor | File and Code templates, open the Other tab.

  2. Here you can explore and edit the templates for main.c, main.cpp, and CMakeLists.txt used in various project formats:

    File templates for C/C++ projects

The following procedures describe how to create file templates. Similar procedures can be used for creating include templates.

Create a new file template

  1. Press Ctrl+Alt+S to open the IDE settings and then select Editor | File and Code Templates.

  2. Using the Scheme list, select the scope to which the file template applies:

    • Default: configure file templates for the entire application. These templates are available in all projects that you open with the current IDE instance. Use them as your personal templates that you prefer regardless of the specific project. CLion stores global templates in the IDE configuration directory under fileTemplates.

    • Project: configure file templates specific for the current project. These templates are available to everyone who works on this project. CLion stores them in the project folder under .idea/fileTemplates.

  3. On the Files tab, click the Create Template button and specify the template name, file extension, name of the resulting file, and body of the template.

  4. Apply the changes and close the dialog.

Copy an existing file template

  1. Press Ctrl+Alt+S to open the IDE settings and then select Editor | File and Code Templates.

  2. On the Files tab, click the Copy Template button and modify the name, file extension, and body of the template as necessary.

  3. Apply the changes and close the dialog.

Save a file as a template

  1. Open a file in the editor.

  2. In the main menu, go to File | Save File as Template.

  3. In the Save File as Template dialog, specify the new template name, extension, and edit the body if necessary. For more information about the syntax used in file templates, see Syntax

    • File name: If necessary, specify a name for the file created from this template. By default, CLion prompts the user to enter a name when adding the file. You can hard-code a specific name to avoid the prompt entirely, or compose a template from available variables. For example, here is how you can use the specified name but put it one directory above the one that was selected during file creation: ../${NAME}

    • Reformat according to style: Reformat the contents generated based on this template according to the code style defined for this file type.

    • Enable Live Templates: Insert live templates inside the file template. Use the Velocity escape syntax to include live template variables in a file template, for example: #[[ $MY_VARIABLE$ $END$ ]]#

  4. Apply the changes and close the dialog.

Syntax

File templates use the Velocity Template Language (VTL), which includes the following constructs:

  • Plain text rendered as is.

  • Variables that are replaced by their values. For example, ${NAME} inserts the name provided by the user when adding the file.

    Use the Velocity escape syntax to include live template variables in a file template, for example: #[[ $MY_VARIABLE$ $END$ ]]#

  • Various directives, including #parse, #set, #if, and others.

Start typing $ or # to refer to completion suggestions for available variables and directives.

For more information, refer to the VTL reference guide.

Last modified: 23 February 2024