看一下枚举:
enum TestEnum
{
First = 1,
Second = 2,
Unknown = 3,
TestTestTest = 100,
Zero = 0,
Foo = 123,
}
如何使用Vim的全部功能重新格式化?
enum TestEnum
{
First = 1,
Second = 2,
Unknown = 3,
TestTestTest = 100,
Zero = 0,
Foo = 123,
}
就个人而言,我正在逐行移动和标签。它与我在任何常规编辑器中所做的相同。怎么做正确的方法?
班级成员也一样:
class Foo
{
SuperFoo foo1;
RegularFoo foo2;
SuperiorFoo foo3;
YetAnotherFoo foo4;
Bar bar;
}
类似
class Foo
{
SuperFoo foo1;
RegularFoo foo2;
SuperiorFoo foo3;
YetAnotherFoo foo4;
Bar bar;
}
由于
答案 0 :(得分:11)
你可以从两个可以做这件事的插件中收获:
答案 1 :(得分:3)
Align.vim插件可能是要走的路,但如果您希望在标准安装上使用它,您可以随时通过awk过滤以获得一些通用功能而不是太多多工作
对于TestEnum,您可以执行类似
的操作'<,'>!awk '{printf "^I\%-20s\%-20s\%-20s\n", $1, $2, $3}'
在视觉上选择了支撑内容后(这里viB非常棒。)
对于Foo,你会做
'<,'>!awk '{printf "^I\%-20s\%-20s\n", $1, $2}'
您可以使用awk for-loop使其变宽,但代价是在此处轻松快速地输入版本。
如果您使用unix实用程序col
,则可以尝试
'<,'>!col -x
但是这里你的里程确实会有所不同,因为这不是公用事业的预期用途。
答案 2 :(得分:0)
对齐或表格式的声音就像要走的路一样,但我还要提到Unix实用程序column
,这非常漂亮,人们应该知道更多。
显然是Unix特有的。 (在openSuSE 12.3上,它在util-linux软件包中;在其他发行版上可能有所不同。)
要在vim中调用它,请在视觉上选择要对齐的行,然后选择
:!column -t
因此,当您使用选定的行点击:
时,vim会为您填充视觉范围,您会得到:
:'<,'>!column -t
(默认情况下,它在空格上分隔,但您可以使用-s <separator>
选项进行更改。)
它使对齐的事情使得每列对于其最长的成员来说足够长。