【问题标题】:Vim getting indentation wrong for Python code (with the python-mode Plugin)Vim 的 Python 代码缩进错误(使用 python-mode 插件)
【发布时间】:2017-12-07 06:42:24
【问题描述】:

如以下屏幕截图所示,我演示了 Vim 在将 cmets 添加到 Python 代码时的奇怪行为。在 Demo 1 和 Demo 2 之间,我只是在不同的缩进级别(在类定义中)开始了 cmets 行。

演示1

演示2

问题:

正如在屏幕投射结束时所展示的那样,只有在插入模式下输入 : 才能正确缩进。

理想的解决方案是:

注释开始行时,请正确保留缩进级别;

【问题讨论】:

  • 请给我看看你的 vimrc。尤其是 indentkeys、indentexpr、已安装的插件,
  • @mattn,由于set smartindent,这似乎更像是一个不兼容问题?简单地删除此类设置后,我不再遇到上述问题。
  • 啊,看来 smartindent 受影响了。如果您不记得设置选项,您可以使用 :verbose set smartindent 确认设置在哪里。如果您可以使用 autocmd FileType python setlocal nosmartindent 为 filetype=python 禁用它
  • 我同意这是重复的。我要删除这个问题吗?@dlmeetei

标签: python vim python-mode


【解决方案1】:

这听起来像是 vim 设置问题。从 vanilla vim 开始,当我创建新行时,每一行都没有缩进。如果我在home 目录中创建一个名为.vimrc 的文件。即~/.vimrc 并放

filetype indent plugin on

在文件中,我得到了看起来像是预期的缩进行为。那对你有用吗。

【讨论】:

    【解决方案2】:

    我的解决方案

    我注释掉了以下行,一切正常。没有对 cme​​ts 进行进一步奇怪的修正。 set smartindent

    我的 Vim 的其他信息:

    为了缩进,这里是设置:

    filetype plugin on
    filetype indent on
    set autoindent
    

    此外,已验证python-mode 没有过错。不管有没有python-modeset smartindent 总是让我遇到问题。

    初步结论:

    set smartindent 可能无法正常工作,我的折叠方法指定如下。这样的设置放在C:/vim/vimfiles/ftplugin/python.vim

    setlocal formatoptions=crnqj
    

    这里是使用的字符的对应关系,但似乎没有一个问题。

    • c:使用 textwidth 自动换行 cmets,自动插入当前评论前导。

    • r:在插入模式下点击<Enter>后自动插入当前评论领导者。

    • n:格式化文本时,识别编号列表。这实际上使用 'formatlistpat' 选项,因此可以使用任何类型的列表。这 数字后的文本缩进用于下一行。这 默认是查找一个数字,可选地后跟'.',':',')', ']' 要么 '}'。请注意,'autoindent' 也必须设置。不工作 和“2”一起。 示例:

      1. the first item
         wraps
      2. the second item
      
    • q:允许使用“gq”格式化 cmets。 请注意,格式不会更改空行或包含的行 只有评论负责人。在这样一行之后开始一个新的段落, 或当评论领导者发生变化时。

    • j:在有意义的地方,在加入行时删除评论领导者。

    参考更好的框架+答案解决方案

    简而言之,我在编辑 Python 脚本时观察到的并不是“Python 文件类型”单独存在的。它与符号#(又名“哈希”)有关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-17
      • 2011-01-01
      相关资源
      最近更新 更多