代码之家  ›  专栏  ›  技术社区  ›  mmcdole

如何修复Vi中整个文件的缩进?

  •  589
  • mmcdole  · 技术社区  · 17 年前

    在Vim中,纠正所有行缩进的命令是什么?

    很多时候,我会把代码复制粘贴到远程终端,把整个事情搞砸。我想一下子解决这个问题。

    17 回复  |  直到 13 年前
        1
  •  1291
  •   ib. Evgeny Shavlyugin    14 年前

    = gg 要获取文件的开头, 缩进, G 在文件的末尾, gg=G

        2
  •  132
  •   the Tin Man    6 年前

    在粘贴到终端之前,请尝试 :set paste 然后 :set nopaste 等你做完了。这将关闭自动缩进、换行和其他会弄乱粘贴的功能。

    编辑:另外,我应该指出,这比 = :%!perltidy 总是 astyle , cindent 等也可以使用。当然,您可以将这些映射到一个击键,并根据文件类型将不同的映射到相同的击键。

        3
  •  39
  •   Sagar Jain    10 年前

    所有命令的主人都是

    gg=G

    这将缩进整个文件!

    下面是一些简单而优雅的命令,用于在Vim或gVim中快速缩进行。

    将当前行下的所有行缩进

    =G
    

    缩进当前行的步骤

    ==
    

    缩进 n

    n==
    

    例如,在当前行下方缩进4行

    4==
    

    =%
    
        4
  •  31
  •   Andrew Wagner    14 年前

    如果要在不必键入任何和弦的情况下重新缩进所处的块,可以执行以下操作:

    [[=]]
    
        5
  •  17
  •   ib. Evgeny Shavlyugin    14 年前

    您可以使用tidy应用程序/实用程序缩进HTML&XML文件,并且它在缩进这些文件时非常有效。

    :!tidy -mi -xml %
    

    美化HTML文件

    :!tidy -mi -html %
    
        6
  •  17
  •   tokhi    11 年前

    gg=G
    
        7
  •  12
  •   ib. Evgeny Shavlyugin    14 年前

    1G=G . 这将缩进文件中的所有行。 1G 把你带到第一行, = 将启动自动缩进和最终缩进 G 将带您进入文件的最后一行。

        8
  •  8
  •   0x89    16 年前

    如果您不想使用 :set paste set nopaste ,也可以粘贴剪贴板的内容:

    "*p
    "+p
    

    这样你就不必离开正常模式。 如果要粘贴 + * 取决于您选择文本的方式,请参见 :help quoteplus

        9
  •  8
  •   ib. Evgeny Shavlyugin    14 年前

    :set paste :设置粘贴 (及 :set nopaste )正是因为这个原因,复制/粘贴给了我很多好处。

        10
  •  7
  •   Eric Johnson    17 年前

    :insert . 这将保留所有格式,而不会自动缩进。更多信息 help :insert

        11
  •  4
  •   the Tin Man    6 年前

    vim-autoformat 使用特定于您的语言的外部程序格式化源文件,例如用于Ruby文件的“rbeautify”gem、“用于JavaScript的js beautify”npm包。

        12
  •  3
  •   Community Mohan Dere    8 年前

    = 过滤命令。因此,对于这样的情况,最好使用外部的C++格式化程序。 astyle uncrustify )例如:

    :%!astyle
    

    Vim的“=”函数默认使用其内部格式化程序(这并不总是正确的),但也可以使用外部格式化程序(如astyle)对其进行设置,如中所述 this question .

        13
  •  2
  •   alphayax    10 年前

    对于XML文件,我使用以下命令

    :1,$!xmllint --format --recover - 2>/dev/null
    

    您需要安装xmllint(包libxml2-utils)

    http://ku1ik.com/2011/09/08/formatting-xml-in-vim-with-indent-command.html

        14
  •  1
  •   Sergio D. Márquez    9 年前

    您可以创建一个映射来执行此操作。

    此选项将自动缩进整个文件,并将光标保持在当前位置:

    nmap <leader>ai mzgg=G`z
    
        15
  •  1
  •   Ramanand Yadav    7 年前

        16
  •  0
  •   Alex    10 年前

    例如:

    public static void main(String[] args) {
    ^I
    ^I System.out.println("Some Garbage printed upon using :insert"); 
    }
    
    推荐文章