在vi中,如何从缓冲的单词中提取文件名部分?

时间:2014-08-22 07:40:46

标签: vim filenames 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 to。中的标记的块)。

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

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

有表达吗?(比如\2:filename?)我知道在csh中有这样的功能,但我想在vi中使用类似的东西。
感谢。

1 个答案:

答案 0 :(得分:0)

你可以尝试这个:s cmd:

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

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

$F/yg_gEp

如果您想多次执行此操作,请将其记录为宏(或使用:normal cmd)。