LINUX.ORG.RU

Vim: автоматическое добавление заголовка у нового файла

 ,


0

2

Хочу немного автоматизировать процесс добавления заголовка к новому файлу.
Сейчас я с помощью пальцев рук и UltiSnips добавляю заголовок.

Можно поставить хук на BufNewFile и загружать заранее заготовленный заголовок из файла. Но возникает вопрос, как вставить текущую дату в этом заголовке.

Вероятно можно с помощью complete() уговорить вим вставить сниппет. Прямой команды UltiSnips я не нашел, а автоматизация complete() у меня получается.

Может гуру вим уже решили данную задачу?

★★★★★

Есть варианты. Тут по сути любой плагин для templat'ов подойдёт, не только те, что специфичные для заголовков.

xaizek ★★★★★
()

а что мешает стартовать из стороннего скрипта, например, shell или cmd? Пишешь скрипт который создает файл с заголовком и открывает его вимом. Потом можно дергать этот же скрипт изнутри viml. так проще, имхо, я б так сделал.

kotlov-net
()

Я vim-template какое-то время использовал. Плагин всем устраивал, вот только не умеет в указанную директорию ходить за шаблонами.

salsa
()
Ответ на: комментарий от redhat

Это немного не то, что я хотел.

Сейчас я сделал так:
au! BufNewFile *.c,*.cpp,*.h,*.m,*.mm 0r /path/to/header_file

Но хотелось прикрутить сниппеты через их стандартный механизм.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от kotlov-net

Все это умеет ultisnips, но я не знаю, как его программно заставить вставить нужный мне сниппет.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от funeralismatic

let g:templates_directory = '/path/to/directory' to specify a directory from where to search for additional global templates. See template search order below for more details. This can also be a list of paths.

salsa
()
Ответ на: комментарий от funeralismatic

Если директория пустая, то он должен использовать шаблоны, которые таскает с собой. А как именно вим ругается? УМВР.

salsa
()
Ответ на: комментарий от salsa
Error detected while processing /home/funeralismatic/.vimrc:
line   17:
E706: Variable type mismatch for: g:templates_directory
Press ENTER or type command to continue

Line 17:

let g:templates_directory = '/mnt/userdata/software/configs/vim/templates'

Плагин установлен в /mnt/userdata/software/configs/vim/plugins с помощью Vundle.

funeralismatic ★★★
()
Ответ на: комментарий от funeralismatic

E706: Variable type mismatch for: g:templates_directory

:h e706

Не похоже, что проблема в отсутствии директории или файлов в ней.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

:h e706

Не знал, что можно шукать по коду ошибки в хелпе.

Разобрав сам плагин (я очень плохо в этот ваш вимскрипт), я таки понял, что g:templates_directory — dictonary, а не string. Хреново, когда документации СОВСЕМ нет.

funeralismatic ★★★
()
Ответ на: комментарий от funeralismatic

На новом инстансе вима воспроизводится? Что показывает echo g:templates_directory если добавить перед let g:templates_directory = '/mnt/userdata/software/configs/vim/templates'? Вангую создание этой переменной уже после того, как Vundle сделал source плагина (надо до).

salsa
()
Ответ на: комментарий от salsa

Вангую создание этой переменной уже после того, как Vundle сделал source плагина (надо до).

Так и есть, но этот нюанс нигде не был описан.

funeralismatic ★★★
()
Ответ на: комментарий от salsa

Вангую создание этой переменной уже после того, как Vundle сделал source плагина (надо до).

А это плохо, что так написан плагин.

andreyu ★★★★★
() автор топика
Ответ на: комментарий от andreyu

В какой-то момент менеджер плагинов першёл на begin()/end(). И, видимо, плюсы этого способа перевесили его минусы.

salsa
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.