繁体   English   中英

使用命令将单词对齐到vim中的指定列

[英]Allign the words to the specified column in vim using commands

如何将整个文件中的单词移动或移动到指定的列? 例如如下:之前:

123 ABC
112 XYZS
15925 asdf
1111 25asd
1 qwer

之后:

123    ABC
112    XYZS
15925  asdf
1111   25asd
1      qwer

如何使用命令模式完成? 这里我们需要将第二个单词移到指定的列这里指定的列是8

使用内置命令的方法

首先:substitute用Tab字符:substitute空格,然后:retab到第8列的制表位,扩展到空格(对于给定的示例):

:.,.+4substitute/\s\+/\t/ | set tabstop=7 expandtab | '[,']retab

(我忽略了重置修改后的选项,这对你来说很重要。)

插件的方法

我的AlignFromCursor插件具有将光标右侧的文本与特定列对齐的命令。 将它与:global命令结合使用,该命令为范围内的所有行调用此函数,并将W动作转换为每个行中的第二个单词,您将获得:

.,.+4global/^/exe 'normal! W' | LeftAlignFromCursor 8

除了其他人提到的vim-plugins,如果你正在使用可用column命令的linux盒子上工作,你可以:

%!column -t

%可以是vim范围,例如视觉选择等。

我使用Tabular插件 安装后,运行以下命令:

:%Tab/\s

其中\\s表示空白字符

我为这个问题做了两个函数。 我在这里发布了它: https//github.com/imbichie/vim-vimrc-/blob/master/MCCB_MCCE.vim

我们需要在vim编辑器中调用此函数,并给出要移动的字符或空格的出现次数以及''和列号内的字符。

出现的次数可以从每一行的起点( MCCB功能)开始,也可以在每一行的末尾( MCCE功能)。

对于问题中提到的上述示例,我们可以使用MCCB函数和我们可以使用空格的字符,因此在vim编辑器中的用法将是这样的。

:1,5call MCCB(1,'',8)

因此,这将从第1行到第5行将第一个空格( '' )移动到第8列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM