将文本与vim对齐等号

ibl*_*lue 32 vim plugins editor

我倾向于在相同的符号上对齐代码以提高可读性.由此:

$ = jQuery.sub()
Survey = App.Survey
Sidebar = App.Sidebar
Main = App.Main
Run Code Online (Sandbox Code Playgroud)

对此:

$       = jQuery.sub()
Survey  = App.Survey
Sidebar = App.Sidebar
Main    = App.Main
Run Code Online (Sandbox Code Playgroud)

在vim中有一个简单的方法吗?

drr*_*lvn 40

我到目前为止找到的最好的插件是Tabular.vim.

最简单的安装方法是使用Pathogen插件,然后将Tabular git存储库克隆到~/.vim/bundle/tabular.Pathogen README中的完整说明.

安装完成后,使用它只需将光标放在要对齐并运行的段落中的某个位置:

:Tab /=
Run Code Online (Sandbox Code Playgroud)

  • 这个插件很棒!您还可以在可视模式下键入Tab以对齐突出显示的文本. (2认同)

Mic*_*ski 13

我相信使用Tabular插件很容易做到这一点.这是在行动.

在可视模式下选择范围(实际上不是必需的),并执行:

:Tabularize /=
Run Code Online (Sandbox Code Playgroud)

插件实际上可以经常找到正确的范围,而无需直观地选择它或指定ex命令的范围.


Tan*_*ett 13

这不是最简单的做事方式,但可以在没有任何插件的情况下完成.

  • 在每个等号之前使用V:s/=/ =/插入一堆空格.
  • 使用Ctrl-V选择要将等号移入的列.
  • 按下<<"取消"每个方程的右侧朝向您选择的列,然后.反复按直到等号在该列中排成一行.


Ale*_*vey 8

对于不涉及安装插件的简单解决方案,只需通过Unix column命令进行过滤即可。

请注意,有两种方法可以执行此操作,具体取决于您的column命令是否支持-o

GNU列命令(Linux等)

:% ! column -t -s= -o=
Run Code Online (Sandbox Code Playgroud)

而已。

BSD列命令(Mac OS X等)

第一步,过滤column -t

:% ! column -t
Run Code Online (Sandbox Code Playgroud)

第二步,删除定界符周围的填充:

:%s/ = /=/
Run Code Online (Sandbox Code Playgroud)

初始文字为

$ = jQuery.sub()
Survey = App.Survey
Sidebar = App.Sidebar
Main = App.Main
Run Code Online (Sandbox Code Playgroud)

在第一步之后,它变成

$        =  jQuery.sub()
Survey   =  App.Survey
Sidebar  =  App.Sidebar
Main     =  App.Main
Run Code Online (Sandbox Code Playgroud)

在第二步之后

$       = jQuery.sub()
Survey  = App.Survey
Sidebar = App.Sidebar
Main    = App.Main
Run Code Online (Sandbox Code Playgroud)

或者,如果您想一步一步做:

:% ! column -t | sed 's/ = /=/'
Run Code Online (Sandbox Code Playgroud)

有关更多信息,man column

  • 这很棒,不需要第3方工具!不知道为什么有人投票否决了它,因为它完全有效 (3认同)
  • 可能应该注意的是,正如这个答案中所写的那样,它将对齐整个缓冲区/文件。如果您只想对齐缓冲区的一部分,可以将“%”替换为范围(如“:&lt;range&gt;!column -t -s= -o=”),或者仅进行选择,按“:”并输入`! 列 -t -s= -o=` (您应该以 `:'&lt;,'&gt;! 列 -t -s= -o=` 结尾)。 (2认同)

Mar*_*cny 5

Tabular的替代插件:

https://github.com/tommcdo/vim-lion

从文档:

例如glip=

$i = 5;
$username = 'tommcdo';
$stuff = array(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

进入

$i        = 5;
$username = 'tommcdo';
$stuff    = array(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)