Để chỉnh sửa tệp không tương tác bằng cách sử dụng ex
( vi
là chế độ trực quan cho ex
), bạn có thể sử dụng +{command}
hoặc -c {command}
tham số cho phép bạn thực hiện các lệnh vi sau khi tệp đầu tiên được đọc.
Đây ex
là một trình soạn thảo dòng lệnh tiêu chuẩn (tương tự ed
).
Ngoài ra còn có vipe
(một trình soạn thảo ống lệnh Vim) nên được sử dụng là một phần của moreutils
gói và nó sẽ cho phép bạn chạy trình soạn thảo của mình ở giữa một đường ống unix và chỉnh sửa dữ liệu đang được chuyển giữa các chương trình.
Ví dụ
Cú pháp đầu vào và đầu ra tiêu chuẩn đơn giản có thể đạt được bằng cú pháp shell này:
$ ex -sc'%p|q!' <(echo Example)
$ echo Example | ex -sc'%p|q!' /dev/stdin
Dưới đây là ví dụ đơn giản về cách in tệp sau khi thay thế:
$ ex /etc/hosts +%s/127/128/ge -sc'%p|q!'
Thêm ví dụ để chỉnh sửa tập tin tại chỗ:
$ 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' {} \;
Bạn cũng có thể sử dụng -s {scriptin}
để các lệnh được tải từ tệp, ví dụ:
$ printf "%s\n" '%s/foo/test/ge' 'wq' > cmds.vim
$ vim -s cmds.vim -es file
hoặc sử dụng chuyển hướng I / O:
$ vim file < cmds.vim
Để chỉnh sửa một tệp và lưu các thay đổi sang tệp khác, hãy kiểm tra các ví dụ sau:
$ ex +%s/127/128/g -sc'wq! new_file' /etc/hosts
$ cat /etc/hosts /etc/fstab | vim - -es '+:%s/foo/test/g' '+:wq! file3'
Ví dụ thực tế hơn.
Ví dụ thực tế trực tiếp từ đặc tả RPM :
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
Trích xuất thẻ html :
ex -s +'bufdo!/<div.*id=.the_div_id/norm nvatdggdG"2p' +'bufdo!%p' -cqa! *.html
Xóa các thẻ XML :
ex -s +'%s/<[^>].\{-}>//ge' +%p +q! file.txt
Xóa thẻ kiểu khỏi tiêu đề và in đầu ra được phân tích cú pháp:
curl -s http://example.com/ | ex -s +'/<style.*/norm nvatd' +%p -cq! /dev/stdin
Phân tích cú pháp html với nhiều quy tắc phức tạp:
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
Thậm chí nhiều ví dụ:
Xem thêm:
file
từ dòng lệnh thứ hai của bạn.