0

我在 vimrc 中有一个函数。该功能是关于完成html中的标签。

 42 function! InsertHtmlTag()
 43     let pat = '\c<\w\+\s*\(\s\+\w\+\s*=\s*[''#$;,()."a-z0-9]\+\)*\s*>'
 44     normal! a>
 45     let save_cursor = getpos('.')
 46     let result = matchstr(getline(save_cursor[1]), pat)
 47     if (search(pat, 'b', save_cursor[1]))
 48         normal! lyiwf>
 49         normal! a</
 50         normal! p
 51         normal! a>
 52     endif
 53     :call cursor(save_cursor[1], save_cursor[2], save_cursor[3])
 54 endfunction
 55 inoremap > <ESC>:call InsertHtmlTag()<CR>

但我最近发现了一些麻烦。当我写 C++ 代码时,在我写完之后#include <iostream>,vim 用</iostream>... 完成它。我想知道只有当文件类型是 .html 时才调用这个函数的方法。

4

1 回答 1

2

Vim 允许特定于文件类型的配置。将代码段从您的移动~/.vimrc到 eg ~/.vim/ftplugin/html_inserttag.vim,并使映射缓冲区本地化:

inoremap <buffer> > <ESC>:call InsertHtmlTag()<CR>

这要求你:filetype plugin on在你的~/.vimrc. 有关:help filetypes更多信息,请参阅。

于 2013-03-24T09:27:18.107 回答