У меня есть:
elif paramo == 3:
fold_path = [Pk_Path+"ns_up", Pk_Path+"ns_up2", Pk_Path+"fid", Pk_Path+"ns_dw", Pk_Path+"ns_dw2"]
CC_path = ["C_ns_up", "C_ns_up2", "C_fid", "C_ns_dw", "C_ns_dw2"]
, и я хотел бы получить:
elif paramo == 3:
fold_path = [Pk_Path+"ns_up", Pk_Path+"ns_up2", Pk_Path+"ns_up3", Pk_Path+"fid", Pk_Path+"ns_dw", Pk_Path+"ns_dw2", Pk_Path+"ns_dw3"]
CC_path = ["C_ns_up", "C_ns_up2", "C_ns_up3", "C_fid", "C_ns_dw", "C_ns_dw2", "C_ns_dw3"]
Для первой строки я могу добавить дополнительные Pk_Path+"ns_up3"
после Pk_Path+"ns_up2"
, выполнив:
:'<,'>s/, Pk_Path+\(.\{-}\)_up2"/, Pk_Path+\1_up2", Pk_Path+\1_up3"/g
и его вставки "ns_up3
":
elif paramo == 3:
fold_path = [Pk_Path+"ns_up, "Pk_Path+"ns_up2", Pk_Path+"ns_up3", Pk_Path+"fid", Pk_Path+"ns_dw", Pk_Path+"ns_dw2"]
CC_path = ["C_ns_up", "C_ns_up2", "C_fid", "C_ns_dw", "C_ns_dw2"]
Но для другого термина Pk_Path+"ns_dw3"
я попытался сделать:
:'<,'>s/, Pk_Path+\(.\{-}\)_dw2"/Pk_Path+\1_dw2", Pk_Path+\1_dw3"/g
но это дало неправильные результаты:
elif paramo == 3:
fold_path = [Pk_Path+"ns_up"Pk_Path+"ns_up2"Pk_Path+"ns_up3", Pk_Path+"fid", Pk_Path+"ns_dw", Pk_Path+"ns_dw2", Pk_Path+"ns_up3", Pk_Path+"fid", Pk_Path+"ns_dw", Pk_Path+"ns_dw3"]
CC_path = ["C_ns_up", "C_ns_up2", "C_fid", "C_ns_dw", "C_ns_dw2"]
Я не знаю, как явно указать, что я хочу вставить Pk_Path+"ns_dw3"
после шестой строки Pk_Path
.
Я протестировалСледующая команда с \zs
, я не понимаю, почему это не работает:
:'<,'>s/\(\zsPk_Path\)\{6}+"\(.\{-}\)_dw2"/Pk_Path+\2_dw3"/g
Кажется, я беру шестое вхождение Pk_Path
с ns_dw2
, затем добавляю \2
pattern и ns_dw3
string.
Откуда моя ошибка?