为什么Vim会忽略我的模式线值?

时间:2011-01-04 02:32:19

标签: vim

我正在使用最终具有以下模式行的Python文件:

# vim: sts=4:ts=4:sw=4

如果我使用此文件启动Vim,则忽略模式行。我怎样才能解决这个问题?顺便说一句,我在nocompatible设置了.vimrc

6 个答案:

答案 0 :(得分:33)

这是你检查的内容......

第1步

确保您的设置正确无误。难道......

:set modeline? modelines?

如果您看到 返回了这些值,则无法正常工作

nomodeline
  modelines=0

你需要看到的是(其中5是大于0的任何东西)

modeline
modelines=5

第2步

在最后一个< modelines>中,您是否有一个vim: 的行不会触及任何其他你的文件行?

说真的,这就是全部。

这些模型都有效......

# vim: cursorline

// vim: cursorline

; vim: cursorline

vim: cursorline

# vim: set cursorline: <-that colon is required if you use the word "set" and this comment after the colon does not affect it.

# anything here vim: cursorline

even without a valid comment vim: cursorline

literally anything as long a space separates> vim: cursorline

第3步

这是一个重要的! 您使用的是set吗?(如options doc中所述的“第二种形式”)请取出set或在末尾添加冒号

这些都不起作用......

# vim: set cursorline
       ^^^ issue: use of the word set without a trailing colon (:)

# vim:cursorline
      ^ issue: no space after the colon

#vim: cursorline
 ^ issue: no space before the word vim

第4步

你已经醒了超过18个小时吗?在你失去理智之前,先睡个好觉。它明天还会被打破。当你再次浏览这个列表时,你会更有可能注意到这个问题。

更新备注

这个答案过去包括这个说法:

  

你使用的是单词吗?(如options doc中所述的“第二种形式”)嗯,这在版本8中不起作用,我不这样做知道它何时停止工作。使用“第一个表格”。

我错了。 @Amadan指出了这一点,我已经纠正了第3步。

答案 1 :(得分:5)

我将问题跟踪到一个名为local_vimrc.vim的本地插件。模式行不起作用的事实是插件的副作用。

答案 2 :(得分:4)

我的调制解调器出现了类似的问题。这个帖子中的答案帮助我找到了答案(将set modeline添加到我的〜/ .vimrc中)

https://superuser.com/questions/323712/modeline-not-work-in-vim

还有一件事帮助我调试这个是输入:set in vim。这将告诉您当前设置的不同值。

答案 3 :(得分:2)

如果您要保存和加载视图,例如使用以下内容,则重新打开文件时不会重新评估您的模式行。

autocmd BufWinLeave *.* mkview
autocmd BufWinEnter *.* silent loadview

答案 4 :(得分:0)

我的modeline和“ noexpandtab”出现了这样的问题:

# vim: noexpandtab ft=python

但是如果我写:

# vim: ft=python noexpandtab

它再次起作用。 (谢谢你们对:verbose set ...的了解!)

答案 5 :(得分:-1)

第一步是始终查看

/usr/share/vim/vim74/debian.vim

并注释掉nomodeline行。

Kubuntu发行版认为它是安全的 威胁。
(例如:libcal允许您运行任意程序)

仅当系统外的人可以通过网页运行vim时,这才是问题。 (不信任用户输入。)

还可以使用拼写检查器进行ddos攻击。 (不信任用户输入。)