如何通过python源代码文件中的注释覆盖vim选项?

Pau*_*den 25 python vim

我想在评论部分的一个文件中设置一些vim选项.

例如,我想在一个文件中设置此选项

set syntax=python
Run Code Online (Sandbox Code Playgroud)

该文件没有.py扩展名,我不想让我的vim安装将所有带有此扩展名的文件识别为python文件.

我知道这可以做到,因为我已经看过了,但我的谷歌搜索还没有结果.

Har*_*lby 32

你想要一个模式行语法,如

# vim: set syntax=python:
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅:Vim Wikia的Modeline魔术.


Ben*_*ank 12

我没有太多使用vim,但我认为你想要的是在文件的末尾添加如下行:

# vim: set syntax=python:
Run Code Online (Sandbox Code Playgroud)

  • @EvgeniSergeev哪一个?在vim之后需要冒号才能识别模式.单行C风格注释(`/*...*/`)需要尾部冒号,在任何其他情况下,你想在vim模式行之后写一些东西.只是一个习惯:作为C风格的评论(以及任何其他像HTML一样开头和结尾的评论)需要编写尾随冒号来将评论结束标记放在同一行,你很容易养成写这个冒号的习惯. (2认同)
  • @ZyX实际上,带有`set`的**版本在没有尾随`:`**至少使用gVim 7.3时根本不起作用.另请注意:**必须**是`vim:`之前的空格 (2认同)

ken*_*orb 5

您可以通过在文件顶部或底部附近添加模式行来覆盖 Vim 选项,例如:

// vim: set syntax=python:
Run Code Online (Sandbox Code Playgroud)

或者:

/* vim: set syntax=python: */
Run Code Online (Sandbox Code Playgroud)

或喜欢:

# vim: set syntax=python ts=4 :
Run Code Online (Sandbox Code Playgroud)

其他示例(来自wikia):

// vim: noai:ts=4:sw=4
   -or-
/* vim: noai:ts=4:sw=4
*/
   -or-
/* vim: set noai ts=4 sw=4: */
   -or-
/* vim: set fdm=expr fde=getline(v\:lnum)=~'{'?'>1'\:'1': */
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的示例(在文件的最后一行):

# vim: set ts=2 sts=2 et sw=2 ft=python:
Run Code Online (Sandbox Code Playgroud)

几个亮点:

  • Vim 仅在modeline设置为modeline或 正整数并且您不是 root时才执行模式行(某些操作系统,例如 Debian、Ubuntu、Gentoo、OSX 等,出于安全原因,默认情况下禁用模式行),因此您需要添加set modeline到您的~/.vimrc文件 ( :e $MYVIMRC),
  • 该行必须在前几行或最后几行,
  • 开头评论和vim:必填之间的空格,
  • vim 检查模式行的位置由modelines变量控制(请参阅 :):help 'modelines'
  • set,在第一结肠(该模式行端部:),
  • “vim:”以外的文本可以被识别为模式行。

有关的: