VIM:为每个新文件[无名称]设置filetype=txt

VIM:为每个新文件[无名称]设置filetype=txt,vim,default,new-operator,file-type,Vim,Default,New Operator,File Type,我尝试了所有可能的方法,让vim将我创建的所有新文件(在一个新选项卡中)的filetype设置为“txt”,但它不起作用 这是我在网上读过几次的体育课: au BufRead,BufNewFile*.txt setlocal ft=txt (放入_vimrc) 但是它不起作用 有人能帮我吗?除非打开文件类型检测或明确设置文件类型,否则所有文件都被视为纯文本。但是,Vim允许您将文件类型设置为任何旧文本,因此您绝对确定它不起作用吗 :set filetype=banana :set filetyp

我尝试了所有可能的方法,让vim将我创建的所有新文件(在一个新选项卡中)的filetype设置为“txt”,但它不起作用

这是我在网上读过几次的体育课:
au BufRead,BufNewFile*.txt setlocal ft=txt

(放入_vimrc)
但是它不起作用


有人能帮我吗?

除非打开文件类型检测或明确设置文件类型,否则所有文件都被视为纯文本。但是,Vim允许您将文件类型设置为任何旧文本,因此您绝对确定它不起作用吗

:set filetype=banana
:set filetype?
  filetype=banana
设置文件类型不会产生任何明显的效果,除非
ftplugin
Vim目录中有相应的文件,并且Vim没有附带
txt.Vim
文件类型文件。当然,您可以在这里添加一个
txt.vim
,但我不确定这会给您带来什么优于默认设置的好处-您希望文本文件有什么特殊行为,而默认行为则不希望

(如果您想要突出显示语法(无论这对文本文件意味着什么!),那么您还必须在
syntax
vim目录中创建一个
txt.vim
文件。)


你想达到什么效果?

实际上比这一切都简单。只需将其作为
.vimrc
中的第一行

set ft=txt

每当打开新文件时,文件类型将设置为txt。但是,如果您打开一个已知现有类型的文件,它仍然会被覆盖,没有问题。

添加到您的
.vimrc
,将
文件类型设置为
文本
,如果尚未设置

autocmd BufEnter * if &filetype == "" | setlocal ft=text | endif

你好,保罗,是的,我在syntax目录中有一个txt.vim。我是否必须将文件放入ftplugin,设置新文件的ft=text?否,如果自动文件类型检测成功,语法设置将是自动的(请参见
syntax/syntax.vim
)。因此,我猜测语法失败是因为缺少
ftplugin\txt.vim
——请尝试添加一个空白的。(另外,确保语法已打开:
syntax on
.vimrc
/
\u-vimrc
中)@Remonn:说到这里,我刚刚尝试了您的
au
命令,语法被正确设置为
txt
,即使没有
ftplugin\txt.vim
。我现在最好的猜测是,您的
.vimrc
@Remonn中没有打开语法:好的,我已经将
syntax/cs.vim
复制到
syntax/txt.vim
,重新打开vim,在
au
命令中运行,然后打开一个
.txt
文件,语法工作正常。所以肯定倾向于
上的
语法,而不是
.vimrc
中的特性。您可以在编辑器中运行
:syntax on
来确认这一点。@Paul,如果我设置ft=text,则语法在文本文件中可见。但问题是Vim没有将(新的,未保存的)无名称文件设置为ft=text。Paul,你把行“au bufread…”放在哪里了?它只在VIM启动时对No Name选项卡这样做(在我保存并重新加载文件之前,不会显示任何语法)。新的缓冲区(选项卡)未设置为ft=txt.Oops,这一点很好。Curt Nelson的答案是正确的。问题是,如果我创建一个新文件,然后将其另存为
test.py
,文件类型将保持为
txt
。如何确保新文件的类型为
txt
,除非它显式保存为其他类型?您可能希望使用Vim的
text
文件类型,而不是
txt
文件类型。Vim 7.3.388(2011-12-30)中添加了
文本
文件类型。