# Live Templates Live templates support overview. **Product Help:** [Live templates](https://www.jetbrains.com/help/idea/using-live-templates.html) *Live Templates* are customizable rules that allow developers to abbreviate repetitive text patterns or surround code fragments with repetitive constructs in the editor. When a user types the designated abbreviation followed by a configurable *expansion key* (usually Tab), the IDE transforms the preceding input sequence to its full-length output, and update the cursor position. For example, consider a Java `for` loop. Typically, the end user would need to type `for (int i = 0; i < 10; i++) {}`. This pattern may be shortened to `fori` and the remaining contents will be expanded, leaving the following structure: ```java for (int i = [|]; i < []; i++) { [] } ``` As the user completes each section of the `for` loop and presses `Tab`, the cursor advances to the next position in the editor. Another use-case for live templates is surrounding the selected code with additional constructs. When a user selects a code fragment and invokes the Code | Surround With... action and chooses the template from the list, the code is wrapped with the content defined in the template. Consider the following Java method with the selected fragment inside ``: ```java public void testMethod() { getActions() } ``` Invoking the Code | Surround With... action and selecting the Iterate Iterable or array template would transform the code to: ```java public void testMethod() { for (Action action : getActions()) { } } ``` > See the [](surround_with.md) section for the information on how to implement more advanced code surrounding. > {style="note"} For more information about creating Custom Live Templates, refer to the [corresponding documentation](https://www.jetbrains.com/idea/help/creating-and-editing-live-templates.html). These sections describe how to add Live Templates, and their associated building blocks, to plugins. * [](providing_live_templates.md) * [](live_templates_configuration_file.md) * [](creating_live_template_functions.md)