Trong VIM, thay thế đường dẫn bằng dấu gạch chéo mà không sử dụng dấu gạch chéo thoát


10

Trong vim tôi muốn thay thế một đường dẫn dài bằng một đường dẫn /a/b/f/g/d/gkhác /s/g/w/d/g/rtrong tệp văn bản. Thông thường tôi sử dụng \/nhưng có quá nhiều dấu gạch chéo ở đây. Có cách nào dễ hơn không?

Câu trả lời:


29

Bạn có thể sử dụng một ký tự khác thay vì dấu gạch chéo /làm dấu phân cách cho lệnh thay thế.

Ví dụ sử dụng #:

:%s#/a/b/f/g/d/g#/s/g/w/d/g/r#

1
Rất đẹp, đây là giải pháp tốt nhất cho đến nay.
Seth

1
Điều này cũng hoạt động trong ed, sed, perl, v.v.
deltab

2

Có lẽ bạn có thể sử dụng sed

Ví dụ 1 - @dấu phân cách sed : Thay thế /opt/omni/lbincho/opt/tools/bin

Khi bạn thay thế một tên đường dẫn có /, bạn có thể sử dụng @như một dấu phân cách thay vì /. Trong ví dụ sed bên dưới, trong dòng cuối cùng của tệp đầu vào, /opt/omni/lbinđã được thay đổi thành /opt/tools/bin.

$ sed 's@/opt/omni/lbin@/opt/tools/bin@g' path.txt /usr/kbos/bin:/usr/local/bin:/usr/jbin/:/usr/bin:/usr/sas/bin /usr/local/sbin:/sbin:/bin/:/usr/sbin:/usr/bin:/opt/omni/bin: /opt/tools/bin:/opt/omni/sbin:/root/bin

Từ: http : //www.thegeek ware.com/2009/10/unix-sed-tutorial-advified-sed-substlation-examples/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.