vim:希望它只针对特定文件类型打开设置

24

我查看了这个,但并没有太大的帮助。也许我没仔细阅读。

基本上,当我打开一个 .txt 文件时,我想要的设置是:

set wrap
set linebreak

如何开启它们?我该如何操作?

先行致谢。

另外,我使用的是XP系统。

3个回答

29

我对那个问题的回答仍然适用:

将基于文件后缀的autocmd命令放置在你的~/.vimrc中。

autocmd BufRead,BufNewFile   *.txt set wrap linebreak

正如Luc所说,你可能更喜欢

autocmd BufRead,BufNewFile   *.txt setlocal wrap linebreak

如果你有可能同时打开文本文件和非文本文件。


6
几乎对了。不要使用“:set”,而是使用“:setlocal”。 - Luc Hermitte
3
:set 命令可以更改所有窗口的设置,而 :setlocal 命令只会更改包含 blah.txt 缓冲区的窗口的设置。 - rampion
2
:set 命令不适用于所有窗口,而是适用于所有缓冲区。 - Luc Hermitte

10

将以下内容放入~/.vim/ftdetect/text.vim文件中(在Windows上,该路径会略有不同):

autocmd BufRead,BufNewFile *.txt setfiletype text

然后将这个文件放到 ~/.vim/ftplugin/text.vim 中:

setlocal wrap
setlocal linebreak

最好只对一个文件类型执行一次autocmd,并将其与您的vimrc文件分开。


你知道的,如果你要为不同的文件类型制定数十条规则,我可以理解想要保留这些东西。但在我的情况下,我只有大约3行适用于C、C++、Java和.pl文件,就这样而已。我无法理解为了这个而在各处散布文件。 - Paul Tomblin

3
一个好的解决方案是“after”目录。您可以在其中添加任何内容的rc文件,例如语法高亮、文件类型等。这些配置在所有其他配置之后运行,因此在系统配置和.vimrc之后运行。因此,在类Unix系统上,您可以创建一个名为~/.vim/after/ftplugin/text.vim的文件,并在其中添加您想要的两行。它们的选项将针对text文件类型进行设置,但不针对其他文件类型进行设置。您可以在每个目录中具有不同的文件,例如perl.vim。
由于您不在Unix环境中,您需要通过检查runtimepath选项来找到您的[运行时目录][1]。您将在那里创建您的“after”目录和文件。
注意:
链接对我来说无效,可能是因为锚点: [1]: http://www.vim.org/htmldoc/options.html#'runtimepath' [2]: http://www.vim.org/htmldoc/options.html#'runtimepath'

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