PHPファイルを新規で書く時に、いちいちhtmlを打つのがめんどくさかったので
.vimrcを編集して、autocmdを使ってhtmlを自動で読み込むようにしました。
目次
やり方
まずはテンプレートファイルを設定しましょう
例えば~/.vim/skelton/php.txtに以下のように設定します
<?php
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>
</title>
</head>
<body>
</body>
</html>
その後にユーザー設定ファイル~/.vimrcもしくはグローバル設定ファイル/etc/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という文字列が入らないようにしているのはlaravelのviewファイルはcakephpと違って
拡張子が.blade.phpとなっているからです
laravelファイルでは@extends('layouts.app')みたいに読み込むので
htmlを自動で読み込ませた場合は消す必要があるのでかえって面倒です。
laravelを使用しない場合は*.phpに読み替えて記述してください!
もちろんこれは複数設定できるので同じようにしてpythonやgoなどでも分けることができます
ファイルパターン
| 記号 | 説明 |
|---|---|
| * | あらゆる文字の列にマッチ。注意: パス区切り文字も含まれる。 |
| ? | あらゆる1文字にマッチ |
| ? | '?' にマッチ |
| . | '.' にマッチ |
| ~ | '~' にマッチ |
| , | パターンを分割する |
| , | ',' にマッチ |
| { } | pattern の ( ) と同様 |
| , | ('{' '}' の内側では) pattern の | と同様 |
| } | リテラルの } |
| { | リテラルの { |
| \{n,m} | pattern の {n,m} と同様 |
| \ | pattern で使われるものと同様の特別な意味を持つ |
| [ch] | 'c' または 'h' にマッチ |
| [^ch] | 'c' と 'h' 以外の文字にマッチ |
おすすめのautocmd
autocmdを使えば
特定のファイルのタブスペースを変更させたり、特定のファイルを開いた時に関数にカーソルを持って行ったりできるので、是非マスターしてください
便利だなと思うのは**以前開いていた位置にカーソルを戻してくれる設定**です
これも同様にvim設定ファイルに記述してください
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