我的复制操作符的源代码编写如下.
foo = rhs.foo;
foobar = rhs.foobar;
bar = rhs.bar;
toto = rhs.toto;
Run Code Online (Sandbox Code Playgroud)
我想按照以下方式排列(更具人性化,不是吗?).
foo = rhs.foo;
foobar = rhs.foobar;
bar = rhs.bar;
toto = rhs.toto;
Run Code Online (Sandbox Code Playgroud)
是否有一个VIM魔术插入到列N,或类似的东西,这将允许我使用每行几次击键排队?
Tal*_*tle 106
这里的其他答案都很棒,特别是@ nelstrom对Tabular.vim的评论以及他出色的截屏视频.
但是,如果我觉得懒得安装任何Vim插件,但不知何故愿意使用Vim宏,我会使用宏.
算法:
For each line,
Add tons of spaces before the symbol =
Go to the column you want to align to
Delete all text up to =, thereby shifting the = into the spot you want.
Run Code Online (Sandbox Code Playgroud)
以你为例,
foo = rhs.foo;
foobar = rhs.foobar;
bar = rhs.bar;
toto = rhs.toto;
Run Code Online (Sandbox Code Playgroud)
将光标定位在第一行的任意位置,并在正常模式下键入以记录该行的宏:
qa0f=100i <Esc>8|dwjq
Run Code Online (Sandbox Code Playgroud)
这意味着:
qa - 在热键中记录一个宏 a0 - 转到该行的开头f= - 转到第一个等号100i <Esc>- (后面有一个空格i,并且<Esc>意味着按下转义,不要输入"<Esc>".)插入100个空格8| - 转到第8列(抱歉,您必须手动确定要对齐的列)dw - 删除直到下一个非空格字符j - 转到下一行q - 停止录音.然后a将光标存储在热键上3次(对于其余3行),将光标放在第二行并按:
3@a
Run Code Online (Sandbox Code Playgroud)
evn*_*vnu 26
如果您使用的是类似unix的环境,则可以使用命令行工具column.使用可视模式标记您的线条,然后:
:'<,'>!column -t
Run Code Online (Sandbox Code Playgroud)
这会将所选文本粘贴到命令的stdin之后'<,'>!.请注意,在以可视模式'<,'>!点击时会自动插入:.
Xav*_* T. 21
有一个很好的插件可以完成,更多,称为Align.vim
对于您的情况,您需要选择表达式然后键入:Align =.它将使用=作为分隔符和引用来对齐所有内容.
(有很多选项可以对齐,左,右,循环等)
您还可以检查提供类似功能的Tabular.vim.请参见那里的截屏视频进行演示.
一种快速,简单的方法是添加X空格,然后删回到X列.例如,如果X = 40,请键入
40a<Space><Esc>d40|
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13782 次 |
| 最近记录: |