我正在尝试为 .PKGINFO 和 .AURINFO 文件添加 Vim 语法高亮,但是由于水平太低,在应该使用 setf 还是 set ft= 的问题上卡住了。
就是在写这个文件的时候: ftdetect/PKGBUILD.vim
我选择用 set ft=
autocmd BufNewFile,BufRead PKGBUILD set ft=PKGBUILD
autocmd BufNewFile,BufRead *.install,install,.INSTALL set ft=sh
autocmd BufNewFile,BufRead .AURINFO,.PKGINFO set ft=PKGBUILD syn=PKGINFO
先查了一下 Vim 的帮助文件:
:setf[iletype] {filetype} *:setf* *:setfiletype*
把 'filetype' 选项设为 {filetype}。但如果已经在 (嵌套)
自动命令序列中设置过,就不再进行。
等价于下面代码的缩写:
:if !did_filetype()
: setlocal filetype={filetype}
:endif
在一个 filetype.vim 里使用该命令可避免设置 'filetype'
选项两次,导致不同的设置和语法文件被载入。
{Vi 无此功能}
:setf[iletype] {filetype} *:setf* *:setfiletype*
Set the 'filetype' option to {filetype}, but only if
not done yet in a sequence of (nested) autocommands.
This is short for:
:if !did_filetype()
: setlocal filetype={filetype}
:endif
This command is used in a filetype.vim file to avoid
setting the 'filetype' option twice, causing different
settings and syntax files to be loaded.
{not in Vi}
然后是网上一些意见:
http://www.newsmth.net/nForum/#!article/VIM/61188
au BufRead,BufNewFile *.rc setf csh //不起作用
au BufRead,BufNewFile *.rc set ft=csh //起作用
http://www.douban.com/group/topic/39880287/
更好的命令是 :setf html,因为 :setf 这个命令有补全但是 set ft= 的没有。不过好像是 vim 7.3 才有 setf 命令。
http://dailyvim.blogspot.com/2008/12/se … 7084218281
Be warned that :setf won't change 'ft' if it has already been set to something else.
Also, if you start a new file with the name and extension you intent to call it, vim will set the filetype for you.
然后是一些插件的示例:
autocmd BufNewFile,BufRead *.markdown,*.md,*.mdown,*.mkd,*.mkdn
\ if &ft =~# '^\%(conf\|modula2\)$' |
\ set ft=markdown |
\ else |
\ setf markdown |
\ endif
au BufNewFile,BufRead *.js setf javascript
au BufNewFile,BufRead *.jsm setf javascript
au BufNewFile,BufRead Jakefile setf javascript
fun! s:SelectJavascript()
if getline(1) =~# '^#!.*/bin/env\s\+node\>'
set ft=javascript
endif
endfun
au BufNewFile,BufRead * call s:SelectJavascript()
有点看不懂了,到底我选择用 set ft= 是正确的吗?
===========================================
还有请求为我写的 PKGINFO.vim 勘误!我参照修改了 pacman 的 PKGBUILD.vim ,但是我找不到一份官方的 .PKGINFO / .AURINFO 语法说明的文档,总感觉改得不对。
最近编辑记录 danielhugo (2014-10-13 23:43:27)
本人的 Arch Linux 软件仓库:http://git.io/-1
本人的广告过滤及代·理规则订阅页面:http://git.io/f0x
离线
我没感觉到这两个有区别……然后,因为 setf 有补全,所以我一直在用 setf……
另外,PKGINFO 是什么时候用的呀,desc 文件用它好像不对呢?
离线
我没感觉到这两个有区别……然后,因为 setf 有补全,所以我一直在用 setf……
另外,PKGINFO 是什么时候用的呀,desc 文件用它好像不对呢?
每个软件包里面都有一个 .PKGINFO 文件吧,
desc 文件的格式好像变化更大了,有空试试给它也做一个语法高亮文件……
我看不懂的是上面引用的那两个插件的ftdetect,求详细解释……
最近编辑记录 danielhugo (2014-10-14 02:52:36)
本人的 Arch Linux 软件仓库:http://git.io/-1
本人的广告过滤及代·理规则订阅页面:http://git.io/f0x
离线