Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

neovimでテンプレートを用意した

$
0
0

はじまり

研究室に所属してから、emacsを習い…vimに手を出し…vim主軸の生活で基本的な操作に慣れました。その結果、pluginによる補完とかに興味を持ったので、pluginを管理する上でneobundleを扱うか、neovimに移行して、dein.vimを扱うかでneovimを選びました。

日々新しいプログラムを書き続けているわけではないものの、基本的情報が含まれたテンプレートってやっぱ便利そうじゃないですか。あと、スマートさを感じます。

そんなモチベーションでneovimでテンプレート読み込みをできるようにしました。

neovimdein.vimについて

記事を書いてる方がたくさんいらっしゃるので、そちらをご参照ください。私は以下の記事などを参照しながら、設定しました。

thinca/vim-templateを使う

自作の環境設定を投稿されている方は多くて、いろいろ拝見させていただいたのですが、pluginを用いるのが初心者にはわかりやすいかなと思って、thinca/vim-templateを使用することにしました。

とりあえず、dein.tomlにどう書けばいいのかで、vim-template/doc/template.jaxとにらめっこした結果、動作するようになったのが以下の通りです。

dein.toml
[[plugins]]repo='thinca/vim-template'hook_add='''letg:template_basedir='~/.config'letg:template_free_pattern='template''''

neovimの設定ファイル置き場である.configは以下のような構造にしています。templateディレクトリ下にtemplate.*と命名して置いておけば、空ファイルを読み込む際にテンプレートで開いてくれます。私はC言語、python、texのテンプレートを用意してます。

tree
~/.config├── dein
  │   ├── clang.toml
  │   ├── dein.toml
  │   └── dein_lazy.toml
  ├── nvim
  |└── init.vim
  └── template
      ├── template.c
      ├── template.py
      └── template.tex

テンプレートを書いてみる

pythonのテンプレートを例に説明していきます。

template.py
#!/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+>を変換してくれます。

init.vim
" テンプレート中に含まれる文字を置き換える
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言語

template.c
//// FileName:       <+FILENAME+>// CreatedDate:    <+DATE+>//#include<stdio.h>intmain(void){<+CURSOR+>return0;}

tex

template.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


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>