UPD: benim Vim-Fu @ İb'ler veya @ sehe en olanlar kadar güçlü değildir, bu nedenle bunun yerine maden birinin önerilen çözümleri kullanmak isteyebilirsiniz. Ancak, benim çözümüm kişisel olarak benim için (Vim çırağı olarak) düzenlemek ve hata ayıklamaktan daha kolaydır, bu yüzden, yine de burada olmasına izin verin.
Sen aşağıdaki geçici işlev eklemek edebilirsiniz vimrc
:
:
function! MyTmpFunc()
:%y
:%s/old1/new1/g
normal! G
normal! P
:%s/old2/new2/g
endfunction
Sonra aşağıdaki komutu size (vim myfile1.txt myfile2.txt myfile3.txt
gibi bir şey) etkiler için gereken dosyaları ile Vim yeniden başlatın ve yürütmek
:argdo call MyTmpFunc()
Sorunuzda anlattığınız şey budur: işlev MyTmpFunc()
w Vim'e verilen her argüman için hasta aranmalıdır.
Artık vimrc'den MyTmpFunc()
öğesini silebilirsiniz.
:bufdo
ile de dikkat edin - her bir açık tampon için bazı komutlar çağırır. Ayrıca, her pencere için komut yürüten :windo
da var, ama kişisel olarak en yararlı olan :bufdo
'u buldum.
Ayrıca, her bir arabelleğe yalnızca tek bir komut yürütmeniz gerekiyorsa geçici işlev oluşturmanız gerekmediğini lütfen unutmayın.
:bufdo %s/old1/new1/g
ve bu kadar: Her tampon içerisinde etmek "new1
" "old1
" yerine sadece gerekiyorsa o zaman aşağıdaki komutu çalıştırabilirsiniz, Say.Ben eski sevgilinle bu yapardım sözü @ib gibi
'u yeniden başlatmadan argüman listesini ayarlamak için': args myfile? .txt' kullanın. Bu harika! çalışıyor Sadece 1 komutunu : w ekledim: argdo% y | % s/old1/new1/g | $ pu | % s/old2/new2/g | w – Pansy
@Pansy. Doğru. İyi arama. Ben her zaman: autowrite autoread özelliği var (Ben zaten geri kalanı için kalıcı bir geri alma ve sürüm kontrolü var) – sehe
Her ikisinin orijinal metin bir kopyasını çalıştırmak için gereksinimi durumunda, bir işareti ayarlama önleyebilirsiniz el ile: ': argdo% y |% s/o1/n1/g | $ pu | '[, $ s/o2/n2/g'. –