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

3

我如何将整个文件中的单词移动或转移到指定的列中? 例如,像下面这样: 之前:

123 ABC
112 XYZS
15925 asdf
1111 25asd
1 qwer

之后:

123    ABC
112    XYZS
15925  asdf
1111   25asd
1      qwer

如何使用命令模式完成此操作? 这里的问题是我们需要将第二个单词移动到指定的列,这里指定的列是第8列。

4个回答

5
除了其他人提到的vim插件外,如果您正在使用可用column命令的Linux操作系统,您可以这样做:
%!column -t

% 可以表示 vim 的范围,例如可视化选择等。


4

内置命令方法

首先使用:substitute将空格替换为制表符,然后使用:retab转换到第8列的制表位,并扩展为空格(根据您给出的示例):

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

插件方法

我的AlignFromCursor插件有命令可以将文本对齐到光标右侧的某一列。将其与一个:global命令结合使用,以在范围内为所有行调用此命令,并使用W运动前往每个行的第二个单词,你将得到:

(如果您关心修改选项的重置,则我将省略这部分内容。)

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

1

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

:%Tab/\s

其中 \s 表示 空白字符


0

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

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

出现次数可以从每行的开头(MCCB函数)开始,也可以在每行的末尾(MCCE函数)。

对于问题中提到的上述示例,我们可以使用MCCB函数,并且字符可以使用空格,所以在vim编辑器中的用法将如下:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接