假设我有几十行代码,如下所示:
callbacks.registerFunction("position", bind(MovementControllerCallbacks::position, movementController, _1));
callbacks.registerFunction("setPosition", bind(MovementControllerCallbacks::setPosition, movementController, _1));
callbacks.registerFunction("translate", bind(MovementControllerCallbacks::translate, movementController, _1));
callbacks.registerFunction("positionDelta", bind(MovementControllerCallbacks::positionDelta, movementController, _1));
callbacks.registerFunction("measuredVelocity", bind(MovementControllerCallbacks::measuredVelocity, movementController, _1));
callbacks.registerFunction("velocity", bind(MovementControllerCallbacks::velocity, movementController, _1));
callbacks.registerFunction("setVelocity", bind(MovementControllerCallbacks::setVelocity, movementController, _1));
callbacks.registerFunction("setXVelocity", bind(MovementControllerCallbacks::setXVelocity, movementController, _1));
callbacks.registerFunction("setYVelocity", bind(MovementControllerCallbacks::setYVelocity, movementController, _1));
callbacks.registerFunction("applyForce", bind(MovementControllerCallbacks::applyForce, movementController, _1));
callbacks.registerFunction("control", bind(MovementControllerCallbacks::control, movementController, _1));
callbacks.registerFunction("xControl", bind(MovementControllerCallbacks::xControl, movementController, _1));
callbacks.registerFunction("yControl", bind(MovementControllerCallbacks::yControl, movementController, _1));
callbacks.registerFunction("inLiquid", bind(MovementControllerCallbacks::inLiquid, movementController, _1));
callbacks.registerFunction("onGround", bind(MovementControllerCallbacks::onGround, movementController, _1));
callbacks.registerFunction("collisionBounds", bind(MovementControllerCallbacks::collisionBounds, movementController, _1));
我希望它们看起来像:
callbacks.registerFunction("position", bind(MovementControllerCallbacks::position, movementController, _1));
callbacks.registerFunction("setPosition", bind(MovementControllerCallbacks::setPosition, movementController, _1));
callbacks.registerFunction("translate", bind(MovementControllerCallbacks::translate, movementController, _1));
callbacks.registerFunction("positionDelta", bind(MovementControllerCallbacks::positionDelta, movementController, _1));
callbacks.registerFunction("measuredVelocity", bind(MovementControllerCallbacks::measuredVelocity, movementController, _1));
callbacks.registerFunction("velocity", bind(MovementControllerCallbacks::velocity, movementController, _1));
callbacks.registerFunction("setVelocity", bind(MovementControllerCallbacks::setVelocity, movementController, _1));
callbacks.registerFunction("setXVelocity", bind(MovementControllerCallbacks::setXVelocity, movementController, _1));
callbacks.registerFunction("setYVelocity", bind(MovementControllerCallbacks::setYVelocity, movementController, _1));
callbacks.registerFunction("applyForce", bind(MovementControllerCallbacks::applyForce, movementController, _1));
callbacks.registerFunction("control", bind(MovementControllerCallbacks::control, movementController, _1));
callbacks.registerFunction("xControl", bind(MovementControllerCallbacks::xControl, movementController, _1));
callbacks.registerFunction("yControl", bind(MovementControllerCallbacks::yControl, movementController, _1));
callbacks.registerFunction("inLiquid", bind(MovementControllerCallbacks::inLiquid, movementController, _1));
callbacks.registerFunction("onGround", bind(MovementControllerCallbacks::onGround, movementController, _1));
callbacks.registerFunction("collisionBounds", bind(MovementControllerCallbacks::collisionBounds, movementController, _1));
这些块由换行符偏移,因此您可以使用{和}在它们之间导航。
我想做一个宏或函数或其他东西来做这个。但是我感觉我的vim工具箱中缺少了一些重要的工具,因为我不知道如何开始处理这个问题。
例如,我不知道如何根据特定标记的列插入可变数量的空格,我假设解决方案涉及。
我知道用手动的视觉块选择很容易。但是我有很多代码要格式化,我希望避免不得不诉诸于手动解决方案。
你应该看看插件列表
对于文本的第一行,您可以使用以下命令:
:%Tabularize /,
得到如下输出:
callbacks.registerFunction("position" , bind(MovementControllerCallbacks::position , movementController , _1));
callbacks.registerFunction("setPosition" , bind(MovementControllerCallbacks::setPosition , movementController , _1));
callbacks.registerFunction("translate" , bind(MovementControllerCallbacks::translate , movementController , _1));
callbacks.registerFunction("positionDelta" , bind(MovementControllerCallbacks::positionDelta , movementController , _1));
callbacks.registerFunction("measuredVelocity" , bind(MovementControllerCallbacks::measuredVelocity , movementController , _1));
我不知道是否可以在空格前加逗号。也许你可以通过详细查看这个插件来找到一些东西(否则,一个简单的替换就可以了)。
Edit: %
in命令似乎是无用的。同样,使用空格作为分隔符,您将得到更接近您所寻找的输出:
:Tabularize / /
输出:callbacks.registerFunction("position", bind(MovementControllerCallbacks::position, movementController, _1));
callbacks.registerFunction("setPosition", bind(MovementControllerCallbacks::setPosition, movementController, _1));
callbacks.registerFunction("translate", bind(MovementControllerCallbacks::translate, movementController, _1));
callbacks.registerFunction("positionDelta", bind(MovementControllerCallbacks::positionDelta, movementController, _1));
callbacks.registerFunction("measuredVelocity", bind(MovementControllerCallbacks::measuredVelocity, movementController, _1));