我想实现这个目标:
我想改变这个
./Dir/file_name1/abc.
./Dir/file_name2/def.
./Dir/file_name3/xyz.
./Dir/file_name4/pqr.
到
./Dir/file_name1/database_file
./Dir/file_name2/database_file
./Dir/file_name3/database_file
./Dir/file_name4/database_file
vim
中的。我是vim
中正则表达式的新手,所以请你帮帮我。
答案 0 :(得分:3)
答案 1 :(得分:1)
:%s/\(.*\/\).*/\1database_file/
表达式:
\( # start group 1 .* # anything, up to the end of the line \/ # a forward slash (this backtracks to the last slash on the line) \) # end group 1 .* # anything, up to the end of the line
答案 2 :(得分:1)
一个:normal
解决方案,因为找到正确的正则表达式可能需要花费太多时间(尽管这是一种浪费时间的有趣方式):
:%norm $T/Cdatabase_file
答案 3 :(得分:1)
又一个vim技巧和窍门(if has('python')
):
:py from vim import current
:py from os.path import dirname, join
:%s/.*/\=pyeval('join(dirname(current.line), "database_file")')/
答案 4 :(得分:0)
%s/\(\d\)\/\S\+$/\1\/database_file/g
parantheses中的表达式匹配每行的file_name末尾的整数,并将用于反向引用,同时将匹配的部分替换为所需的术语' database_file'