.cpp
文件中编辑C ++代码,而模板代码进入.tcc
文件中。当我打开这样的文件时,没有语法突出显示可用。我在set syntax=cpp
的tpp.vim
文件中尝试过~/.vim/ftplugin/
,但是它什么也没做,而在编辑器中可以正常工作。有什么办法可以让vim将特定扩展名与其他扩展名同义?#1 楼
首选的方法是创建一个~/.vim/filetype.vim
,如:help 43.2
所述并在Vim FAQ 26.8中进行了解释:上述方法的更好替代方法是创建一个filetype.vim
〜/ .vim目录(或在'runtimepath'选项中指定的目录之一
)中添加文件,并添加以下行:
" my filetype file
if exists("did_load_filetypes")
finish
endif
augroup filetypedetect
au! BufRead,BufNewFile *.x setfiletype c
augroup END
编辑:
did_load_filetypes
应该不会给您带来任何问题; 为了避免多次不必要地加载此文件,这是必要的,并且它是从基础文件继承的($ VIMRUNTIME / filetype.vim ):
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2014 Jun 12
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
finish
endif
let did_load_filetypes = 1
有关更多信息,请检查
:help new-filetype
。#2 楼
您可以这样做(在您的全局.vimrc
中):autocmd BufEnter *.tpp :setlocal filetype=cpp
评论
autocmd BufEnter * .cuf:setlocal filetype = fortran会将CUDA Fortran文件视为Fortran
– khaverim
18年1月27日在18:38
如果您要与一种语言关联多个文件,请用逗号分隔模式,并在逗号之间没有空格:autocmd BufEnter * .tsx,*。jsx,*。ts:setlocal filetype = javascript
–ggorlen
20年1月9日在23:20
#3 楼
还可能有:au BufRead,BufNewFile *.tpp setlocal filetype=cpp
,位于它们的.vimrc
中,这样一来,打开带有.tpp
扩展名的文件时,文件类型就设置为C ++ 评论
这似乎与@ edi9999的答案基本相同。您能详细说明为什么要使用BufRead,BufNewFile而不是BufEnter吗?
– ar鱼
'18 Sep 5'在10:02
@oarfish我认为这没什么大不了,但我更喜欢BufEnter之前的BufRead,BufNewFile,因为在文档(:help BufEnter)中它指出:“ BufEnter:...。在开始编辑缓冲区时也会执行,之后BufReadPost自动命令。”其中BufReadPost是BufRead的同义词。另外,我不认为:在setlocal之前是必需的,因此我在回答中也省略了它。 (我可能认为这是完全错误的,很高兴听到进一步的讨论)
–tallamjr
18/09/5在10:50
评论
为什么要使用if语句?如果我将其保留,则不会为我执行autocmds。
– ar鱼
2015年11月10日14:28
@oarfish即使重新启动Vim?
–mMontu
2015年11月10日15:05
好的,这很奇怪。我要去吧!组中的语句,即au! BufRead,BufNewFile * .py setfiletype python并在au下面的行中! BufRead,BufNewFile * .tpp setfiletype cpp。但是只有第二个实际上有效。编辑.py文件不会将文件类型设置为python。我不是vim专家,所以我可能缺少一些东西。
– ar鱼
2015年11月10日15:11
@oarfish如果您检查我在编辑中提到的文件,您会发现它已经包含au BufNewFile,BufRead * .py,*。pyw setf python的行,因此您的第一行是不相关的。您的问题可能在其他地方。
–mMontu
2015年11月10日15:16
“编辑.py文件不会将文件类型设置为python”-在这种情况下:set ft的输出是什么?如果不是python,请尝试按照Vim-FAQ 2.5中的步骤进行操作-Vim存在“ xyz”(某些)问题
–mMontu
2015年11月10日15:20