Tôi có những điều sau đây trong vimrc của mình:
func! AddSpaceBeforeEqual()
s/\([a-z)_0-9"'\[\]]\)=/\1 =/ge
endfunc
Tôi đang sử dụng vint để lint vimrc của mình và nhận được cảnh báo sau:
ProhibitCommandWithUnintendsSideEffect Tránh các lệnh có tác dụng phụ ngoài ý muốn. Tránh sử dụng: s [ubstolarship] vì nó di chuyển con trỏ và in thông báo lỗi. Thích các hàm (như search ()) phù hợp hơn với các script. Đối với nhiều lệnh vim, các hàm tồn tại làm điều tương tự với ít tác dụng phụ hơn. Xem: các hàm trợ giúp () để biết danh sách các hàm dựng sẵn. Hướng dẫn về Phong cách Vimscript của Google
Tuy nhiên, tôi không nghĩ rằng họ là một cách để thay thế mà không sử dụng :s
lệnh.
Ví dụ, search()
hàm cung cấp các dòng khớp với một mẫu, nhưng không có cách nào để thay thế. Các substitute()
chức năng hoạt động trên một chuỗi, và không thay thế trên toàn bộ một tập tin.
Tôi có nên tự mình thực hiện một phương pháp thay thế hay chúng là một cách thông minh hơn để viết lại chức năng của tôi?
:help function-search-undo