我正在编辑一个Python文件,它使用两个空格进行编程缩进 - 我更喜欢4个空格。在我的.vimrc中,我有以下与缩进相关的设置:
set tabstop=4 "Indentation levels every four columns
set expandtab "Convert all tabs typed to spaces
set shiftwidth=4 "Indent/outdent by four columns
set softtabstop=4
如何让Vim将所有现有的2个空格缩进转换为4个空格缩进?
换句话说:
if something:
dothis()
变为
if something:
dothis()
当我尝试gg = G
时def check():
for a in list:
for b in list2:
check(a, b)
while (len > MAX) :
poll()
while(len(thelist) > 0) :
poll()
return results
成了
def check():
for a in list:
for b in list2:
check(a, b)
while (len > MAX) :
poll()
while(len(thelist) > 0) :
poll()
return results
答案 0 :(得分:47)
为了使每行开头的空格数加倍(并且仅在开头):
:%s/^\s*/&&/g
替换模式中的 &
是匹配的模式。
可能对你没有任何副作用。
答案 1 :(得分:17)
按gg=G
是重新缩进文件中所有内容的命令。如果你有其他可以重新缩进的元素,vim也会缩进这些元素,这并不能总是产生预期的效果。如果丑陋,你必须手动清理它们。
或者,您可以使用>
命令缩进,并使用范围手动有效地浏览文件。例如,99>k
会将光标下方的99行缩进一级。
答案 2 :(得分:3)
我发现重写脚本http://pypi.python.org/pypi/Reindent/0.1.0对我很有用。不纯粹的vim,但真的很容易!
安装完成后,您可以在vim中使用它
:%! reindent
(即通过reindent程序管理整个缓冲区)并完成。
从命令行,它可用于重新注册多个文件(例如,目录中的所有文件,甚至递归到目录树中)。
答案 3 :(得分:2)
尝试以下替换命令:
:%s/ / /g
(澄清:第一个和第二个'/'之间有两个空格,第二个和第三个'/'之间有四个空格./)
处理空白问题时,一个有用的命令也是
set list
命令将直观地显示所有空格。使用
set nolist
要取消设置。
答案 4 :(得分:1)
重新格式化Python,修复许多其他问题以及使其与PEP8兼容的最佳方法是使用autopep8。见related question。因此,在vim中安装autopep8(例如pip install autopep8
)后,您可以执行以下操作:
:%! autopep8 -
还有一个vim-autopep8插件可以让事情变得更简单。
答案 5 :(得分:0)
vim插件vim-autoformat会自动将格式化程序autopep8集成到vim中(如果已安装)。您可以使用一次击键来格式化整个文件或可视选择的部分。
更重要的是,vim-autoformat会将.vimrc
的相关设置考虑在内,例如如果你有
set shiftwidth=4
在.vimrc
中,它会将此信息传递给autopep8。
答案 6 :(得分:-1)
你试过吗?
:雷泰公司
我现在不在Vim的机器前,所以我无法验证这一点。