Olmayan etkileşimli kullanarak düzenlemek dosyası için ex
( vi
görsel modu ise ex
), kullanabilirsiniz +{command}
veya -c {command}
ilk dosya okuma olmuştur sonra vi komutları çalıştırmak için izin veren parametreleri.
ex
(E benzer bir standart bir komut satırı editörü ed
).
Ayrıca paketin bir vipe
parçası olan (bir Vim komut satırı düzenleyicisi) kullanılmalıdır moreutils
ve editörünüzü bir unix boru hattının ortasında çalıştırmanıza ve programlar arasında aktarılan verileri düzenlemenize izin verir.
Örnekler
Bu kabuk sözdizimi ile basit standart girdi ve boru kullanarak çıktı elde edilebilir:
$ ex -sc'%p|q!' <(echo Example)
$ echo Example | ex -sc'%p|q!' /dev/stdin
İşte değiştirmeden sonra dosyayı nasıl basacağınızı gösteren basit bir örnek:
$ ex /etc/hosts +%s/127/128/ge -sc'%p|q!'
Dosyaları yerinde düzenlemek için daha fazla örnek:
$ ex +'%s/127/128/g' -cswq file
$ ex -sc '%s/olddomain\.com/newdomain.com/g|x' file
$ printf '%s\n' 'g/olddomain\.com/s//newdomain.com/g' w q | ex -s file
$ ex -s "$file" <<< $'g/old/s//new/g\nw\nq'
$ ex -sc 'argdo %s/old/new/ge|x' ./**
$ find . -type f -exec ex -sc '%s/old/new/g|x' {} \;
Ayrıca -s {scriptin}
komutların dosyadan yüklenmesi için de kullanabilirsiniz , örneğin:
$ printf "%s\n" '%s/foo/test/ge' 'wq' > cmds.vim
$ vim -s cmds.vim -es file
veya G / Ç yönlendirmesini kullanarak:
$ vim file < cmds.vim
Bir dosyayı düzenlemek ve değişiklikleri diğerine kaydetmek için aşağıdaki örnekleri kontrol edin:
$ ex +%s/127/128/g -sc'wq! new_file' /etc/hosts
$ cat /etc/hosts /etc/fstab | vim - -es '+:%s/foo/test/g' '+:wq! file3'
Daha pratik örnekler
Gerçek canlı örneği dan RPM şartname:
vim -E -s Makefile <<-EOF
:%substitute/CFLAGS = -g$/CFLAGS =-fPIC -DPIC -g/
:%substitute/CFLAGS =$/CFLAGS =-fPIC -DPIC/
:%substitute/ADAFLAGS =$/ADAFLAGS =-fPIC -DPIC/
:update
:quit
EOF
HTML etiketleri ayıklanıyor :
ex -s +'bufdo!/<div.*id=.the_div_id/norm nvatdggdG"2p' +'bufdo!%p' -cqa! *.html
XML etiketlerini kaldırma :
ex -s +'%s/<[^>].\{-}>//ge' +%p +q! file.txt
Stil etiketini başlıktan kaldırmak ve ayrıştırılan çıktıyı yazdırmak:
curl -s http://example.com/ | ex -s +'/<style.*/norm nvatd' +%p -cq! /dev/stdin
Birden çok karmaşık kuralla html'yi ayrıştırın :
ex -V1 $PAGE <<-EOF
" Correcting missing protocol, see: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2359 "
%s,'//,'http://,ge
%s,"//,"http://,ge
" Correcting relative paths, see: https://github.com/wkhtmltopdf/wkhtmltopdf/issues/2359 "
%s,[^,]\zs'/\ze[^>],'http://www.example.com/,ge
%s,[^,]\zs"/\ze[^>],"http://www.example.com/,ge
" Remove the margin on the left of the main block. "
%s/id="doc_container"/id="doc_container" style="min-width:0px;margin-left : 0px;"/g
%s/<div class="outer_page/<div style="margin: 0px;" class="outer_page/g
" Remove useless html elements. "
/<div.*id="global_header"/norm nvatd
wq " Update changes and quit.
EOF
Daha da fazla örnek:
Ayrıca bakınız:
file
ikinciyi ikinci komut satırından düşürebilirsin .