vim 复制到多行并增加数量

du7egjpx  于 8个月前  发布在  其他
关注(0)|答案(5)|浏览(114)

在Vim中有没有一种方法可以将下面的行复制到多行,并在@之后增加数字
XMMN26@1 MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac
成为

XMMN26@1   MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac 

XMMN26@2   MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac 

XMMN26@3   MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac 

XMMN26@4   MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac

字符串
有办法吗?
谢谢,
凯文

l7wslrjt

l7wslrjt1#

有办法吗?
是的,您需要:h v_g_ctrl-a。即:
1)复制源代码行;
2)使用视觉块模式选择那些“数字”(除了第一个);
3)做g^A。瞧。
完整的序列是yy3pE^V2jg^A

cygmwpex

cygmwpex2#

您可以使用以下命令复制行任意次数

Y5p   -- Yanks current line and copies it 5 times

字符串
并使用查找/替换来获得递增的数字

%s/1 /\=line('.').' '


请注意,\=line('.')使用当前的linerber。

编辑

最后,这一切都取决于确保搜索命令找到了要替换的正确位置

%s/1/\=line('.')     -- this will fail if there's a 1 before the actual @1

%s/@1/\='@'.line('.')

%s/@\zs1/\=line('.')

%s/1\ze /\=line('.')

ha5z0ras

ha5z0ras3#

使用宏

:let @a=""
:let @a="yypf@\<c-a>"
10@a

字符串
在第一行中,我们清除宏'a'
在第二行中,我们定义宏'a'

yy ..................... copy the first line
 p ...................... paste the copied line
 f@ ..................... jumps to @
 \<c-a> ................. as if you typed Ctrl-a (increase number)


OBS:为了使用像control或shift这样的双引号,你的宏需要在双引号之间,而不是单引号之间。
在第三行我们调用宏'a' 10次

dgtucam1

dgtucam14#

我的UnconditionalPaste plugin有一个gppMap,它粘贴了当前光标列上或之后的第一个十进制数。
因此,在您的示例中,它将是^eyy3gpp(* 转到第一列的末尾,yank line,special-paste with increment 3 times*)。

nhjlsmyf

nhjlsmyf5#

你可以使用for循环和put

:for i in range(1,10) | put ='XMMN26@'.i.'  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac'  | endfor

字符串
测试结果:

XMMN26@1  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac
XMMN26@2  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac
XMMN26@3  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac
XMMN26@4  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac
XMMN26@5  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac
XMMN26@6  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac
XMMN26@7  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac
XMMN26@8  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac
XMMN26@9  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac
XMMN26@10  MMN26:D MMN26:G MMN26:S VSS nch_12od15_mac


修改示例:https://vim.fandom.com/wiki/Making_a_list_of_numbers

相关问题