如何只为Vim中的某些文件类型启用换行?

Ash*_*ppa 8 vim word-wrap

我已经关闭了自动换行Vim的在我加入这个的vimrc:

set nowrap
Run Code Online (Sandbox Code Playgroud)

但是,我想在编辑*.tex文件时自动打开换行.所以,我把它添加到我的vimrc:

augroup WrapLineInTeXFile
    autocmd!
    autocmd FileType tex set wrap
augroup END
Run Code Online (Sandbox Code Playgroud)

当检测到文件类型为TeX时,这应该启用换行.这与tex文件的预期效果一样,但是如果我在同一个Vim会话中打开一个非tex文件,它会打开换行!

在Vim上的不同文件扩展名上自动启用和禁用自动换行建议使用BufRead.但是,即使这样也会产生相同的效果:如果我先打开TeX文件,然后打开非TeX文件,则非TeX文件会打开换行.

如何仅针对特定文件类型正确启用换行?

Jim*_*art 7

你可以用setlocal它.它只会影响当前的缓冲区.

augroup WrapLineInTeXFile
    autocmd!
    autocmd FileType tex setlocal wrap
augroup END
Run Code Online (Sandbox Code Playgroud)

这将适用于每个新的TeX缓冲区.


Ing*_*kat 5

'wrap'选项是window 的本地选项。当您使用 时:set,它也将应用于任何新打开的窗口。你想用:setlocal.

另外,虽然你的:augroup WrapLineInTeXFile作品有效,但它很麻烦并且不能扩展到许多设置。如果:filetype plugin on在 中~/.vimrc,您可以将文件类型特定的设置(如:setlocal wrap)放置在~/.vim/after/ftplugin/tex.vim(使用after目录允许您覆盖由 完成的任何默认文件类型设置$VIMRUNTIME/ftplugin/tex.vim)。