用vim格式化文本

用vim格式化文本,vim,formatting,Vim,Formatting,我有一个包含275行代码的文件。这些行是c中的常量声明。 e、 g 我的问题是,自从我通过复制和粘贴其他文件创建该文件以来,它有许多重复的行,并且这些行不是相同的100% e、 g 在vim中是否有办法找到这些行并只保留其中一行。或者,是否有一种方法可以将所有行的格式设置为数字(在本例中为3100)因子处于某一水平?e、 G6标签什么的?我开始手动操作,但进入和离开编辑模式都很痛苦。请帮忙!如果这个问题没有意义,请帮助我改进它 编辑: 我找到了一个关于格式化文本的解决方案: 在vim的正常模式I

我有一个包含275行代码的文件。这些行是c中的常量声明。 e、 g

我的问题是,自从我通过复制和粘贴其他文件创建该文件以来,它有许多重复的行,并且这些行不是相同的100%

e、 g

在vim中是否有办法找到这些行并只保留其中一行。或者,是否有一种方法可以将所有行的格式设置为数字(在本例中为3100)因子处于某一水平?e、 G6标签什么的?我开始手动操作,但进入和离开编辑模式都很痛苦。请帮忙!如果这个问题没有意义,请帮助我改进它

编辑: 我找到了一个关于格式化文本的解决方案: 在vim的正常模式I中,类型:

qa0f 50i 38|dwjq274@a
它完成了任务。我真的很高兴(在这个论坛上)找到了这个 现在的问题是,
uniq
命令没有完成我读到的它应该做的事情。在vim I中键入:!uniq但并非所有重复行都被删除。我想这可能是因为某些地方的标签而不是空格。有关于这方面的信息吗?

您可以使用以下方法来排列数字:

:Tabularize / [0-9]\{4\}/l2c1
这将以以下方式将所有数字与4位数字(本例中为3100)对齐:

71 #define LM_HOST_ALLOWED  3100 //Boolean.
72 #define LM_HOST_ALLOWED  3100 //Boolean.
您可以使用以下方式排列数字:

:Tabularize / [0-9]\{4\}/l2c1
这将以以下方式将所有数字与4位数字(本例中为3100)对齐:

71 #define LM_HOST_ALLOWED  3100 //Boolean.
72 #define LM_HOST_ALLOWED  3100 //Boolean.

如果维护订单不重要,可以使用

:%sort u
对内容进行排序,每行只保留一个实例。(假设您首先使用“对齐”或“制表”规范化了行格式。)


如果您需要维持秩序,我的手机可能会很方便。通过Alt+M映射,它显示当前字在缓冲区中的出现次数。您可以检查每一行以检查重复项



如果您经常这样做(并且无法解决问题的根本原因,即输入重复项),您可以编写一个自定义命令,使用
getline()
split()
解析所有行,然后跳到找到的第一个重复行;可能只是几行Vimscript。

如果维护顺序不重要,您可以使用

:%sort u
对内容进行排序,每行只保留一个实例。(假设您首先使用“对齐”或“制表”规范化了行格式。)


如果您需要维持秩序,我的手机可能会很方便。通过Alt+M映射,它显示当前字在缓冲区中的出现次数。您可以检查每一行以检查重复项



如果您经常这样做(并且无法解决问题的根本原因,即输入重复项),您可以编写一个自定义命令,使用
getline()
split()
解析所有行,然后跳到找到的第一个重复行;这可能只是几行Vimscript。

还有Align插件,因此您可以在等号或逗号或其他位置执行代码对齐等操作。还有Align插件,这样你就可以在等号或逗号上排列代码。