はじまり
研究室に所属してから、emacsを習い…vimに手を出し…vim主軸の生活で基本的な操作に慣れました。その結果、pluginによる補完とかに興味を持ったので、pluginを管理する上でneobundleを扱うか、neovimに移行して、dein.vimを扱うかでneovimを選びました。
日々新しいプログラムを書き続けているわけではないものの、基本的情報が含まれたテンプレートってやっぱ便利そうじゃないですか。あと、スマートさを感じます。
そんなモチベーションでneovimでテンプレート読み込みをできるようにしました。
neovimとdein.vimについて
記事を書いてる方がたくさんいらっしゃるので、そちらをご参照ください。私は以下の記事などを参照しながら、設定しました。
thinca/vim-template
を使う
自作の環境設定を投稿されている方は多くて、いろいろ拝見させていただいたのですが、pluginを用いるのが初心者にはわかりやすいかなと思って、thinca/vim-templateを使用することにしました。
とりあえず、dein.toml
にどう書けばいいのかで、vim-template/doc/template.jaxとにらめっこした結果、動作するようになったのが以下の通りです。
[[plugins]]repo='thinca/vim-template'hook_add='''letg:template_basedir='~/.config'letg:template_free_pattern='template''''
neovimの設定ファイル置き場である.config
は以下のような構造にしています。template
ディレクトリ下にtemplate.*
と命名して置いておけば、空ファイルを読み込む際にテンプレートで開いてくれます。私はC言語、python、texのテンプレートを用意してます。
~/.config├── dein
│ ├── clang.toml
│ ├── dein.toml
│ └── dein_lazy.toml
├── nvim
|└── init.vim
└── template
├── template.c
├── template.py
└── template.tex
テンプレートを書いてみる
pythonのテンプレートを例に説明していきます。
#!/usr/bin/env python# -*- coding: utf-8 -*-## FileName: <+FILENAME+># CreatedDate: <+DATE+>#<+CURSOR+>
まだ、python初心者なこともあって、import
はテンプレートに書いていません。個人的に、ファイル名とファイル作成日は欲しいなぁと思っていたので、そうなるように書いてあります。
https://github.com/thinca/vim-template/blob/master/doc/template.jax
の記載そのままですが、以下のようにinit.vim
に書いておくと、<+FILENAME+>
,<+DATE+>
,<+CURSOR+>
を変換してくれます。
" テンプレート中に含まれる文字を置き換える
autocmd MyAutoCmd User plugin-template-loaded call s:template_keywords()function! s:template_keywords()silent! %s/<+DATE+>/\=strftime('%Y-%m-%d %T')/gsilent! %s/<+FILENAME+>/\=expand('%:r')/gendfunction" テンプレート中に含まれる'<+CURSOR+>'にカーソルを移動
autocmd MyAutoCmd User plugin-template-loaded
\ if search('<+CURSOR+>')
\ |silent! execute 'normal! "_da>'
\ |endif
<+FILENAME+>
拡張子抜きでファイル名が置換されます。<+DATE+>
テンプレートを読み込んだ時にイベントが発生するので、<+DATE+>
にファイル作成日が置換されます。気が向いた時に:w
で最終更新日も記入されるようにしたいものですね。<+CURSOR+>
カーソルの位置が移動されて、展開されます。このカーソル位置が指定できるのは、C言語やtexの時、恩恵を感じました。
template sample
参考になるかはわからないですが、一応晒します。
C言語
//// FileName: <+FILENAME+>// CreatedDate: <+DATE+>//#include<stdio.h>intmain(void){<+CURSOR+>return0;}
tex
%% FileName: <+FILENAME+>% CreatedDate: <+DATE+>%\documentclass{jsarticle}\title{<+CURSOR+>}\author{your name}\date{\today}\begin{document}\maketitle\end{document}
参照元
neovim
dein.vim
NeoVim と dein.vim を使ってみる!
NeoVim、そしてdein.vimへ
thinca/vim-template