在vim中是否有任何方法可以为变量声明应用均匀间距?

时间:2014-09-17 08:08:26

标签: vim

让我说我有这样的事情:

int foo()
{
    int temp;
    char **argv;
    uint32_t test;
}

是否有任何键或顺序的命令使上面的行转换为:

int foo()
{
    int      temp;
    char     **argv;
    uint32_t test;
}

如果重要的话,我正在使用空格作为标签。

3 个答案:

答案 0 :(得分:1)

是的,可以使用Tabular插件。有很棒的vimcast覆盖主题:http://vimcasts.org/episodes/aligning-text-with-tabular-vim/

答案 1 :(得分:1)

使用以下按键创建一个宏(我将其保存在寄存器w下):

q w $vT da space * 10 ctrl + c :s/\%17c\s*// 输入 j q

这是保存在注册表w中的内容:

$vT da          ^C^Cp:s/\%17c\s*//^Mj
  • $ - 转到行尾
  • vT - 使用T
  • 之前的搜索标记所有内容,直到空格
  • d - 删除标记为
  • 的内容
  • a ^C - 插入空格(尽可能多)
  • p - 粘贴您之前删除的内容
  • s/\%17c\s*// - 从第17列开始删除空格
  • j - 转到下面一行

空格数和列数可能与您有所不同。

这并不像安装插件那么容易,但我认为编写自己的宏,使用它并看到它确实有效会更有趣。

答案 2 :(得分:1)

考虑使用easy-align插件。

在您的情况下,我需要做的就是选择3行,然后按 Enter - Space

(输入触发交互模式, - 表示last空格是空格。即"对齐最后一个空格字符"

该插件非常实用,而且即时制作新的对齐规则非常容易。