Vim: Файлы шаблонов
Файлы шаблонов Vim полезны для создания нового файла с шаблонным кодом. Существует множество плагинов для сниппетов и шаблонов для Vim, но вы можете создавать шаблоны файлов без каких-либо плагинов, используя концепцию, которую в Vim называют скелетными файлами. Это позволяет автоматически заполнить новый файл заданным шаблоном. Подробности можно узнать во встроенной справочной системе :help skeleton
.
Для создания скелетного файла Vim, вы настраиваете Vim на чтение файла с диска каждый раз, когда открываете новый пустой буфер с именем файла, соответствующим заданному шаблону. Скелетные файлы на самом деле просто трюк, использующий возможность Vim autocmd
для запуска команд при определённых событиях.
:autocmd BufNewFile *.c 0r ~/vim/skeleton.c
:autocmd BufNewFile *.h 0r ~/vim/skeleton.h
:autocmd BufNewFile *.java 0r ~/vim/skeleton.java
Одним из примеров файла шаблонов может быть написание файла сценариев bash
. Вы можете создать скелетный файл, содержащий строку Bash shebang
, например:
#!/usr/bin/env bash
Затем настройте свой Vim в файле конфигурации для заполнения любого нового и пустого буфера, заканчивающегося на .sh
, содержимым этого файла. Если вы работает с языком, который требует большого количества шаблонов в каждом файле, это может значительно сэкономить время.
Другим примером использования является файл README.md
. Вы можете создать шаблон Markdown файла, который включает все заголовки и основные пункты, которые должны быть в каждом хорошем файле README
. Затем всякий раз, когда вы открываете новый файл с именем README.md
в Vim, буфер автоматически предварительно заполниться файлом шаблоном скелета.
Настроить шаблоны в .vimrc
очень просто:
autocmd BufNewFile readme.md 0r ~/skeletons/readme.md
autocmd BufNewFile *.sh 0r ~/skeletons/bash.sh
В данном случае я создал новый каталог внутри своего домашнего каталога с названием skeletons
, но вы можете разместить его где угодно. Вот так работает первый:
autocmd
— запускается автоматически при событии.BufNewFile
— это событие нового файла в Vim.readme.md
— это шаблон, которому должен соответствовать новый файл.0r
— читать в буфер начиная со строки0
, первая строка.~/skeletons/readme.md
— читаемый файл.
Второй пример работает также, но использует шаблон файла *.sh
для соответствия любой файлу, оканчивающемуся на .sh
.