在vi中,如何从缓冲字中提取文件名部分



在vi中,例如,我想更改一行

cp ~/bkup/Evac_BUSYBOX_ e2fsprogs/old_e2fsprogs/blkid/blkid.h

cp ~/bkup/Evac_BUSYBOX_/blkid.h e2fsprogs/old_e2fsprogs/blkid/blkid.h  

我有许多这样的行,只是末尾的文件名不同。我想使用这样的命令(对于使用标记从'a到。'的块)

:'a,.s/\cp (.*) (.*)/\cp 1?? 2

? ?应该是'缓冲字2的文件名部分'

有表达式吗?(像2:filename ?)我知道在cash中有这样的函数,但我想在vi中使用类似的函数。
谢谢。

您可以尝试:s cmd:

s#v(BOX_)(.*/([^/]*))*#1/32# 

实际上,在正常模式下,你可以在这一行这样做:

$F/yg_gEp

记录它作为宏(或:normal cmd),如果你想做很多次。