我如何将整个文件中的单词移动或转移到指定的列中? 例如,像下面这样: 之前:
123 ABC
112 XYZS
15925 asdf
1111 25asd
1 qwer
之后:
123 ABC
112 XYZS
15925 asdf
1111 25asd
1 qwer
如何使用命令模式完成此操作? 这里的问题是我们需要将第二个单词移动到指定的列,这里指定的列是第8列。
column
命令的Linux操作系统,您可以这样做:%!column -t
%
可以表示 vim 的范围,例如可视化选择等。
首先使用:substitute
将空格替换为制表符,然后使用:retab
转换到第8列的制表位,并扩展为空格(根据您给出的示例):
:.,.+4substitute/\s\+/\t/ | set tabstop=7 expandtab | '[,']retab
我的AlignFromCursor插件有命令可以将文本对齐到光标右侧的某一列。将其与一个:global
命令结合使用,以在范围内为所有行调用此命令,并使用W
运动前往每个行的第二个单词,你将得到:
(如果您关心修改选项的重置,则我将省略这部分内容。)
.,.+4global/^/exe 'normal! W' | LeftAlignFromCursor 8
我为这个问题编写了两个函数。 我在这里发布了它:https://github.com/imbichie/vim-vimrc-/blob/master/MCCB_MCCE.vim
我们需要在vim编辑器中调用这个函数,并给出要移动的字符或空格的出现次数,以及''
中的字符和列号。
出现次数可以从每行的开头(MCCB函数)开始,也可以在每行的末尾(MCCE函数)。
对于问题中提到的上述示例,我们可以使用MCCB函数,并且字符可以使用空格,所以在vim编辑器中的用法将如下:
:1,5call MCCB(1,' ',8)
这将把第一个空格(' ')移动到从第1行到第5行的第8列。