有没有一种方法可以通过使用命令自动取消标记源文件中的所有内容?[关闭]


11

然后在那之后自动重新缩进?我曾尝试将代码从一个终端屏幕复制到另一个终端屏幕,但是列表一团糟。

我不知道该功能叫什么,所以我很难在Google上找到它(通常返回与如何设置标签大小有关的东西,不幸的是,这并不是我一直在寻找的东西)。



1
我投票结束这个题为离题的问题,因为它与编程工具有关。关于工具的问题更适合StackOverflow上,或在这种情况下,Vi.SE。但是,这个问题太老了,无法移植。

1
我投票结束这个问题是因为离题,因为它与特定工具的使用有关,应该在Stack Overflow或(如果现在问)vi.se上询问

Answers:


9

Vim有一个retab命令,可让您将文件制成表格或取消表格格式。它使用诸如tabstop和的设置expandtab。因此,如果要用空格替换制表符,可以执行以下操作:

:%retab

有关retab完整的详细信息,请参见文档。

买者自负:这也将替换标签,是不是在一行的开头。因此,如果您在字符串中间使用硬标签,它们也会被替换。


3
通常,在字符串中包含真正的制表符被认为是一个坏主意。\t为了避免此类问题,它仍然可能发生,但首选使用。
Spencer Rathbun

6

要扩展@Kaleb的答案(我还没有待评论的代表),在执行retab命令之前,您需要:set expandtab (set et)。否则,重新制表符将不会用空格替换制表符。

另外,您可能希望指定制表符。通常在其他人创建的源代码中,代码的制表符设置为4或什至2。在执行该:%retab命令之前,请尝试使用不同的制表符。尝试

:set ts=8 (the default)
:set ts=4 
:set ts=2  

查看哪种设置最有意义。

要后退(用适当的TAB字符替换空格,请使用

:set noet
:%retab!

1

取消制表符是指将制表符更改为空格吗?如果是这样,请在整个缓冲区中用制表符替换空格,如下所示:

:%s/^I/    /g

在替换的右边有四个空格,但是您可以根据需要将其设为任意数字。要获取原义的^I制表符,您可以先按^VTab键。

您可以使用=命令重新缩进。要重新缩进缓冲区的全部内容,请使用以下命令:

gg
=G

这会将您带到顶部,然后将所有内容重新缩进底部。


-1:用固定数量的空格替换选项卡几乎没有用。它将更改任何包含制表符并以非制表符开头的行的外观。
凯文·克莱恩
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.