プロが教える店舗&オフィスのセキュリティ対策術

次のような内容のvim script(insert_header.vim)を実行したいのですが、うまくできません。

augroup header
autocmd!
autocmd FileType html :-r $VIM\_MyHeader\html.html<CR>
autocmd FileType css :-r $VIM\_Myheader\css.css<CR>
autocmd FileType txt :-r $VIM\_Myheader\txt.txt<CR>
autocmd FileType js :-r $VIM\_Myheader\js.js<CR>
augroup END

(このscriptは、ファイルタイプに応じて必要なテキストファイルを読み込むことを
意図したものです。html.html, css.css などのテキストファイルは$VIM/_MyHeader に置いてあります。)

このscriptをキーにわりつけることを以下のようにしました。(_vimrcの記入しました。)
map <F11> :source $VIM/vimfiles/insert_header.vim<CR>>

この設定で、F11を打っても、insert_header.vim は実行されませんでした。
insert_header.vim を実行するには、どこを修正する必要があるのでしょうか。

A 回答 (1件)

autocmd FileType 〜


の意味を取り違えていますね
help に
> |FileType| オプション 'filetype' がセットされたとき
と有るので、
set filetype=html
等が実行されたときに read が実行されます
ファイルを作成・開いた時もこれが呼ばれますので、同じ様に働きます

私も新規作成時にはテンプレートを読み込みたいので
autocmd BufNewFile *.htm,*.html 0r ~/Templates/HTML.html
の様にしています

本当に <F11> をタイプした時にファイルを読み込みたいなら、末尾のような関数を作っておいて、
map <F11> :call InsertFile()<CR>
と呼び出すようにすれば良いと思います
function! InsertFile() abort
if &filetype == 'text'
read $VIM\_Myheader\txt.txt
elseif &filetype == 'html'
read $VIM\_MyHeader\html.html
endif
endfunction
    • good
    • 0
この回答へのお礼

お教えいただきありがとうございます。
確かに、autocmd FileType の意味を間違えていました。これはファイルタイプを
設定したときに実行されるのですね。
例題も示して下さり、大変助かりました。

お礼日時:2019/06/25 15:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!