[英]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范围,例如视觉选择等。
我为这个问题做了两个函数。 我在这里发布了它: 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.