如何在Vim中仅为特定文件类型启用换行?

10

我已经通过在我的vimrc中添加以下内容关闭了Vim中的自动换行

set nowrap

但是,当我编辑*.tex文件时,我希望自动打开换行功能。因此,我将以下代码添加到我的vimrc文件中:

augroup WrapLineInTeXFile
    autocmd!
    autocmd FileType tex set wrap
augroup END

当检测到文件类型为TeX时,这应该使得文本自动换行。对于tex文件,这个功能可以正常地工作,但是如果在同一个Vim会话中打开一个非tex文件,则会开启自动换行功能!

在Vim上针对不同的文件扩展名自动开启和关闭折行功能建议使用BufRead代替。但是,即使是使用BufRead,它也会有相同的效果:如果我先打开一个TeX文件,然后再打开一个非TeX文件,那么非TeX文件就会开启自动换行。

如何正确地只对某种文件类型启用自动换行?

2个回答

9
你可以使用setlocal来实现这个功能,它只会影响当前缓冲区。
augroup WrapLineInTeXFile
    autocmd!
    autocmd FileType tex setlocal wrap
augroup END

这将应用于每个新的TeX缓冲区。


5

'wrap'选项是局部于窗口的。当你使用:set时,它也会应用于任何新打开的窗口。你需要使用:setlocal

此外,尽管您的:augroup WrapLineInTeXFile可以工作,但它很繁琐,并且不适用于许多设置。如果您在~/.vimrc中有:filetype plugin on,则可以将特定于文件类型的设置(如:setlocal wrap)放置在~/.vim/after/ftplugin/tex.vim中(使用after目录允许您覆盖由$VIMRUNTIME/ftplugin/tex.vim执行的任何默认文件类型设置)。


Ingo:虽然在这种情况下我不需要它,但如果我不断积累vimrc中的设置,你的建议是有用的 :-) - Ashwin Nanjappa

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