如果文件类型是tex

44

我想在 .vimrc 文件中针对 LaTeX 文件运行一个命令。我认为语法有问题,它不起作用。有任何线索吗?

if &filetype=='tex'
    set spell
endif
5个回答

39
你可以使用自动命令来实现你想要的功能:
autocmd BufNewFile,BufRead *.tex set spell

13
你应该使用FileType事件和:setlocal命令:autocmd FileType tex :setlocal spellFileType事件能让你在文件具有不同扩展名时执行:set ft=tex命令实现拼写检查,而:setlocal spell命令则不会改变全局的'spell'选项数值,从而保留新缓冲区的默认设置。 - ZyX
在我的情况下,实际上您的建议对我有所帮助,我的意思是使用 FileType 事件:autocmd FileType tex : ... - Grzegorz Wierzowiecki
谢谢,兄弟。这让我很容易就找到并复制了我想要的内容。不过我建议你在".txt"前面加上一个*号。 - Eric Hodonsky
对我来说,使用 FileType 可以使我的帮助页面也得到拼写检查,因此我选择了 Loren 的答案。 - Forethinker

39

对于那些想要检查当前文件类型并在编辑时执行某些操作的人,可以尝试以下方法:

if (&ft=='c' || &ft=='cpp')
    :!g++ %
endif

这在映射或自定义函数中有效,但我认为答案是关于当打开Tex文件时的操作。 - Ingo Karkat
2
我正在尝试使用类似以下的内容:if &ft == "tex" set nonu endif ``` 但它似乎没有任何效果。 - Eduardo Reis

12

另一种方法是使用index()

let fts = ['c', 'cpp']
if index(fts, &filetype) == -1
    " do stuff
endif

index() 搜索字符串中元素的第一个索引,如果未找到则返回-1。这样你就可以只将更多的 filetype 值附加到列表中,而不需要为每个文件类型添加更多条件。


1
小问题。索引返回列表中filetype的出现次数。语句应该是!= -1才能正常工作。即如果fts中存在filetype,则执行操作。 - mirageglobe

5

你需要手动检测文件类型,因为只有在加载 vimrc 后,vim 才会自动检测文件类型。

只需添加以下内容:

`filetype detect`

在您的代码之前。


-1

补充一下,使用索引。使用ft快速检查文件类型的快捷方式。

更新:

if index(['tex'], &filetype) != -1
    echom "this is latex filetype!"
endif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接