我刚用vim来编辑javascript文件。我在vim中的缩进设置如下:
当我编辑文件的一部分时,在vim中看起来好像缩进是正确的:
但是,在SourceTree和Sublime Text中,缩进不正确:
SourceTree:
Sublime Text:
任何人都可以向我解释为什么会发生这种情况以及如何解决这个问题?我也很好奇,真的," true"表示文件的状态。
答案 0 :(得分:6)
有三种相关设置:tabstop
,softtabstop
和shiftwidth
。它们不相同。
tabstop
设置标签字符的大小。softtabstop
设置按下<Tab>
键时插入的空格数。shiftwidth
设置使用自动注册时插入的空格数(例如,在键入if (foo) {<Cr>
后)。如果未设置expandtab
,则只要空格数为0x09
,空格就会自动替换为制表符(tabstop
)。如果设置了expandtab
,则空格永远不会“扩展”为制表符。
在您的情况下,您只设置shiftwidth
,它不控制制表符的实际大小。您要么将tabstop
设置为与Sublime文本相同的值,要么通过设置expandtab
来使用空格缩进。如果您使用set list
,则可以查看您的文件是否使用制表符或空格(使用set nolist
禁用此选项。)
在我个人看来,您通常希望将所有三个设置都设置为相同的值。我使用此命令快速设置所有三个:TS 4
:
command! -nargs=1 TS setlocal ts=<args> sts=<args> sw=<args>
答案 1 :(得分:0)
解决方案(感谢@ceejayoz)是在expandtab
设置中设置.vimrc
选项,所以:
autocmd FileType javascript setlocal shiftwidth=2 tabstop=2 expandtab
autocmd FileType jsx setlocal shiftwidth=2 tabstop=2 expandtab
完成了这项工作。