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

Vim 在vi中,如何从缓冲字中提取文件名部分?,vim,filenames,vi,Vim,Filenames,Vi,例如,在vi中,我想更改一行 从 \cp ~/bkup/Evac_BUSYBOX_ e2fsprogs/old_e2fsprogs/blkid/blkid.h 到 我有很多这样的行,只是结尾有不同的文件名。 我想使用类似于使用标记从“a到”的块的命令 :'a,.s/\\cp \(.*\) \(.*\)/\\cp \1?? \2 ???应为“缓冲字\2的文件名部分” 是否有表达式?如\2:filename?我知道csh中有这样的函数,但我想在vi中使用类似的函数。 谢谢。你可以试试这个:s c

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

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

我有很多这样的行,只是结尾有不同的文件名。 我想使用类似于使用标记从“a到”的块的命令

:'a,.s/\\cp \(.*\) \(.*\)/\\cp \1?? \2
???应为“缓冲字\2的文件名部分”

是否有表达式?如\2:filename?我知道csh中有这样的函数,但我想在vi中使用类似的函数。 谢谢。

你可以试试这个:s cmd:

事实上,在正常模式下,您可以在该行执行此操作:

$F/yg_gEp
如果要多次录制,请将其录制为宏或使用:normal cmd

s#\v(BOX_)(.*/([^/]*))*#\1/\3\2# 
$F/yg_gEp