Help us understand the problem. What is going on with this article?

vimでautocmdを使ってテンプレートを自動で読み込ませる

PHPファイルを新規で書く時に、いちいちhtmlを打つのがめんどくさかったので
.vimrcを編集して、autocmdを使ってhtmlを自動で読み込むようにしました。

目次

やり方
解説
ファイルパターン
おすすめのautocmd

やり方

まずはテンプレートファイルを設定しましょう
例えば~/.vim/skelton/php.txtに以下のように設定します

~/.vim/skelton/php.txt
<?php
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>
</title>
</head>
<body>
</body>
</html>

その後にユーザー設定ファイル~/.vimrcもしくはグローバル設定ファイル/etc/vimrc
このように記述してください

~/.vimrc
autocmd BufNewFile [{blade}].php 0r $HOME/.vim/skelton/php.txt

このようにすることでvimを使えば
phpを記述したい場合はoを打てば改行して入力モードに入るし
bodyを記述したい場合は9jで9行下がってoだし
titleを設定したい場合は、6jで6行下がって、
oで入力し、ctr+cで入力モードを抜けて、Jでタイトルタグを横並びにすれば良い
これで煩わしい典型文を書かなくて済むし、何より時短になりますね

解説

軽く解説をすると、BufNewFileで新しいファイルを読み込んだ時って意味です
0r filepathでファイルパスのスケルトンファイルを読み込むようになってます

ファイルパスを適切に設定することでbladeという文字列が入らないphpファイルには
先ほどのテンプレートが読み込まれることになります

ここでbladeという文字列が入らないようにしているのはlaravelviewファイルはcakephpと違って
拡張子が.blade.phpとなっているからです

laravelファイルでは@extends('layouts.app')みたいに読み込むので
htmlを自動で読み込ませた場合は消す必要があるのでかえって面倒です。

laravelを使用しない場合は*.phpに読み替えて記述してください!

もちろんこれは複数設定できるので同じようにしてpythongoなどでも分けることができます

ファイルパターン

記号 説明
* あらゆる文字の列にマッチ。注意: パス区切り文字も含まれる。
? あらゆる1文字にマッチ
\? '?' にマッチ
. '.' にマッチ
~ '~' にマッチ
, パターンを分割する
\, ',' にマッチ
{ } pattern の ( ) と同様
, ('{' '}' の内側では) pattern の \
} リテラルの }
{ リテラルの {
\{n,m} pattern の {n,m} と同様
\ pattern で使われるものと同様の特別な意味を持つ
[ch] 'c' または 'h' にマッチ
[^ch] 'c' と 'h' 以外の文字にマッチ

おすすめのautocmd

autocmdを使えば
特定のファイルのタブスペースを変更させたり、特定のファイルを開いた時に関数にカーソルを持って行ったりできるので、是非マスターしてください

便利だなと思うのは以前開いていた位置にカーソルを戻してくれる設定です
これも同様にvim設定ファイルに記述してください

~/.vimrc
function! s:RestoreCursorPosition()
  if line("'\"") <= line("$")
    normal! g`"
    return 1
  endif
endfunction
" ファイルを開いた時に、以前のカーソル位置を復元する
augroup vimrc_restore_cursor_position
  autocmd!
  autocmd BufWinEnter * call s:RestoreCursorPostion()
augroup END

公式ドキュメント
https://vim-jp.org/vimdoc-ja/autocmd.html
https://vim-jp.org/vimdoc-en/autocmd.html
参考
http://vim.wikia.com/wiki/Restore_cursor_to_file_position_in_previous_editing_session

satorunooshie
経済学を学んでいる大学三年生です PHP, Kotlinを中心に学習しています 役に立てそうな英語の記事や詰まったところを共有していきます
https://satorunooshie.net
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away