重新格式化 vim 文件

重新格式化 vim 文件

解决了,看我的回答。不过,我觉得这个问题对于像我这样的新手来说仍然是一个很好的学习经验

所以我正在做这个项目,但我在家里和工作中都在做。

该项目是用 编写的python

我遇到的问题是,在工作中我在 Windows 上使用 notepadd++。

对于 notepad++,我的选项卡设置如下:

  • tab=4 列,但是
    • 不要将制表符扩展为 4 个空格

然后我通过电子邮件将文件发送给自己,并在家中下载。当我在 Linux 机器上使用 vim 打开文件时,会出现相同数量的选项卡,但所有选项卡都占用 8 列,实际上并没有被空格替换。

我不知道为什么会发生这种情况,但是是否有一些命令可以用来根据我的要求重新格式化文件.vimrc

gg=G有点用,但效果不太好

我的设置如下:

"se t_Co=256   
syntax enable

set mouse=a  
set tabstop=4  
set softtabstop=4  
set shiftwidth=4   
"set expandtab     
set number   
set showcmd   
set cursorline     
set showmatch    

execute pathogen#infect()    
filetype plugin indent on

"folding settings  
set foldmethod=indent         
set foldnestmax=10           
set nofoldenable              
set foldlevel=1               

编辑:无论它在后台做了什么来尝试转换它,看起来它不是以递归方式或类似方式进行的。这很难解释,所以让我给出一些屏幕截图。

这是我刚刚在 vim 中打开的未经编辑的文件的一部分: 在此处输入图片描述

你可以看到标签有 8 列,但实际上应该是 4 列

现在,我输入 gg=G 来“修复”缩进。 在此处输入图片描述 对于第一个方法/该方法中的第一个语句,它按预期工作。但它之后的所有语句都保持不变

也只有第一个方法得到修复,但对于所有其他复合语句(for 循环、try 块等),第一行的模式被更正,但没有发生其他更正,就像算法没有重复一样。(或递归,无论如何)

答案1

要使 vim 中的选项卡变为 4 列,请使用:

set shiftwidth=4 tabstop=4

更具体地说,如果您只想在编辑 python 文件时使用这些选项卡设置,则将以下内容放入您的 ~/.vimrc 中:

autocmd BufNewFile,BufRead *.py set tabstop=4 shiftwidth=4

答案2

我找到了答案,就像你们中的一些人建议的那样,它没有获取正确的源,我怀疑这是因为它是一个 DOS 文件。通过键入以下内容进行修复:

:source ~/.vimrc 

在 ed 命令行中

相关内容