我曾经在Vim中有8个空格的标签。然后我改为4个空格,但是现在每当我在更改为4个空格之前添加一行代码时,它会给我一个缩进不匹配错误,即使所有内容都很好地排列。有什么方法可以避免这个问题吗?
答案 0 :(得分:9)
您是否只更改了tabstop选项?
我使用4个空格(当我点击标签时填充空格,插入实际标签ctrl-v tab
)。以下是.vimrc中与标签相关的设置:
" tabs
set tabstop=4
set shiftwidth=4
set expandtab
当您使用空格填充制表符时,您将始终插入空格而不是制表符,并且您的代码看起来总是相同。
当您使用制表符时,每个工具都会以不同方式显示制表符,您最终会花时间设置应为制表符显示的空格数(8,4,3.5),而不是进行高效工作。
或者选择其中一个(来自vim 7.1 help tabstop):
Note: Setting 'tabstop' to any other value than 8 can make your file
appear wrong in many places (e.g., when printing it).
There are four main ways to use tabs in Vim:
1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
(or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim
will use a mix of tabs and spaces, but typing <Tab> and <BS> will
behave like a tab appears every 4 (or 3) characters.
2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
'expandtab'. This way you will always insert spaces. The
formatting will never be messed up when 'tabstop' is changed.
3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
|modeline| to set these values when editing the file again. Only
works when using Vim to edit the file.
4. Always set 'tabstop' and 'shiftwidth' to the same value, and
'noexpandtab'. This should then work (for initial indents only)
for any tabstop setting that people use. It might be nice to have
tabs after the first non-blank inserted as spaces if you do this
though. Otherwise aligned comments will be wrong when 'tabstop' is
changed.
答案 1 :(得分:7)
你做过:%retab
......?
答案 2 :(得分:3)
对于python代码,最好使用以下代码:
:set tabstop=8
:set shiftwidth=4
:set expandtab
通过这种方式,您仍然使用“行业标准”8个空格标签,但您不会将任何标签放入您的文件中。这应该保持你的旧代码清洁,虽然你将不得不返回并手动移动一切随着时间的推移。你肯定想要:重新做一切。
如果你想用4个空格缩进替换所有内容
:set tabstop=4
:retab
:set tabstop=8
这将使用每个标签4个空格的空格重新缩进所有内容,并将您设置为合理的默认值。
显然,这是受到意见的,但在我的书中使用标签设置为除了你捕获文件时所获得的内容之外的其他任何内容都是在寻找麻烦。
答案 3 :(得分:2)
可视化不匹配的最佳方法是:设置列表,该列表将显示空白问题。
set listchars=tab:>-,trail:-,nbsp:+ "This is terminal friendly but you can make fancy
set list
我认为当间隔缩进是常态时,这是python编辑的基本设置。特别是当一个同事编辑文件时。
我还仔细检查了“Code lay-out”中的样式指南。你可能想要使用http://www.python.org/dev/peps/pep-0008/中指定的python -tt选项。如果将制表符与空格混合,那将抛出警告和错误。
您可以将其纳入您的单元测试中。似乎pep推荐4个空格用于更新的代码。如果您打算为开源项目做贡献,您可能需要考虑更改。
在eol
中删除空格也是额外的整洁nnoremap <leader>wd :%s/\s\+$//<cr>