Vim Python 代码的缩进错误(使用 python-mode 插件)
Vim getting indentation wrong for Python code (with the python-mode Plugin)
如以下截屏所示,我演示了 Vim 在向 Python 代码添加注释时的奇怪行为。在演示 1 和演示 2 之间,我只是在不同的缩进级别开始注释行(在 class 定义内)。
演示 1
演示 2
问题:
如截屏视频结尾所示,只有在插入模式下键入 :
才能正确缩进。
理想的解决方案将实现:
开始一行评论时,请正确保留缩进级别;
这听起来像是 vim 设置问题。从 vanilla vim 开始,当我创建新行时,每一行都没有缩进。如果我在 home
目录中创建一个名为 .vimrc
的文件。即 ~/.vimrc
并输入
filetype indent plugin on
在文件中,我得到了预期的缩进行为。那对你有用吗。
我的解决方案
我注释掉了下面这行,一切正常。没有对评论进行进一步的奇怪更正。
set smartindent
我的Vim的其他信息:
为了缩进,这里进行设置:
filetype plugin on
filetype indent on
set autoindent
另外,经核实python-mode
并无过错。不管有没有 python-mode
,set smartindent
总是让我遇到问题。
初步结论:
set smartindent
效果不佳,可能是我指定的折叠方法如下。这样的设置放在C:/vim/vimfiles/ftplugin/python.vim
setlocal formatoptions=crnqj
这里是使用字符的对应关系,但是none似乎有点麻烦。
c
: Auto-wrap 评论使用文本宽度,自动插入当前评论前导。
r
: 在插入模式下点击<Enter>
后自动插入当前评论标题。
n
:格式化文本时,识别编号列表。这实际上使用
'formatlistpat' 选项,因此可以使用任何类型的列表。这
数字后的文本缩进用于下一行。这
默认是查找一个数字,可以选择后跟“.”、“:”、“)”、
']' 或者 '}'。注意 'autoindent' 也必须设置。不起作用
与“ 2”一起使用。
示例:
1. the first item
wraps
2. the second item
q
:允许使用 "gq" 格式化注释。
请注意,格式化不会更改空行或包含的行
只有评论领袖。在这样一行之后开始一个新段落,
或者当评论领袖改变时。
j
:在有意义的地方,在加入行时删除评论领导者。
参考更好的框架+回答的解决方案
简而言之,我在编辑 Python 脚本时观察到的并不是 "Python filetype" 独有的。它与符号 #
有关,又名 "hash"。
如以下截屏所示,我演示了 Vim 在向 Python 代码添加注释时的奇怪行为。在演示 1 和演示 2 之间,我只是在不同的缩进级别开始注释行(在 class 定义内)。
演示 1
演示 2
问题:
如截屏视频结尾所示,只有在插入模式下键入 :
才能正确缩进。
理想的解决方案将实现:
开始一行评论时,请正确保留缩进级别;
这听起来像是 vim 设置问题。从 vanilla vim 开始,当我创建新行时,每一行都没有缩进。如果我在 home
目录中创建一个名为 .vimrc
的文件。即 ~/.vimrc
并输入
filetype indent plugin on
在文件中,我得到了预期的缩进行为。那对你有用吗。
我的解决方案
我注释掉了下面这行,一切正常。没有对评论进行进一步的奇怪更正。
set smartindent
我的Vim的其他信息:
为了缩进,这里进行设置:
filetype plugin on
filetype indent on
set autoindent
另外,经核实python-mode
并无过错。不管有没有 python-mode
,set smartindent
总是让我遇到问题。
初步结论:
set smartindent
效果不佳,可能是我指定的折叠方法如下。这样的设置放在C:/vim/vimfiles/ftplugin/python.vim
setlocal formatoptions=crnqj
这里是使用字符的对应关系,但是none似乎有点麻烦。
c
: Auto-wrap 评论使用文本宽度,自动插入当前评论前导。r
: 在插入模式下点击<Enter>
后自动插入当前评论标题。n
:格式化文本时,识别编号列表。这实际上使用 'formatlistpat' 选项,因此可以使用任何类型的列表。这 数字后的文本缩进用于下一行。这 默认是查找一个数字,可以选择后跟“.”、“:”、“)”、 ']' 或者 '}'。注意 'autoindent' 也必须设置。不起作用 与“ 2”一起使用。 示例:1. the first item wraps 2. the second item
q
:允许使用 "gq" 格式化注释。 请注意,格式化不会更改空行或包含的行 只有评论领袖。在这样一行之后开始一个新段落, 或者当评论领袖改变时。j
:在有意义的地方,在加入行时删除评论领导者。
参考更好的框架+回答的解决方案
简而言之,我在编辑 Python 脚本时观察到的并不是 "Python filetype" 独有的。它与符号 #
有关,又名 "hash"。