Tôi có một tệp với một loạt các mặc định của người dùng. Tôi muốn thay đổi một số văn bản, nhưng tôi đang vật lộn để tìm ra một công cụ đối sánh và thay thế. Sử dụng ví dụ sau:
###############################################################################
# Trackpad, mouse, keyboard, Bluetooth accessories, and input #
###############################################################################
# Trackpad: enable tap to click for this user and for the login screen
defaults write com.apple.driver.AppleBluetoothMultitouch.trackpad Clicking -bool true
Tôi muốn thay thế # Trackpad: ...
bằngrunning "Trackpad: ..."
Phá vỡ vấn đề, tôi đã nghĩ ra một cái gì đó bằng cách sử dụng trình kiểm tra regex:
/\n\n#\s(.*)/g
Nếu tôi thử và sử dụng cái này trong Vim thì nó không hoạt động với tôi:
:/\n\n#\s(.*)/running "\1"/g
Tôi đoán vấn đề của tôi rút ra hai câu hỏi cụ thể:
- Làm cách nào tôi có thể tránh tìm kiếm các
\n
ký tự và thay vào đó hãy đảm bảo#
không xuất hiện ở cuối nhóm tìm kiếm? - Làm thế nào tôi có thể sử dụng hiệu quả các nhóm chụp?
Có một số câu trả lời tuyệt vời dưới đây. Khó chọn giữa cả ba, tuy nhiên tôi cảm thấy câu trả lời được chọn là chính xác nhất cho thông số ban đầu của tôi. Tôi khuyên bạn nên thử cả ba câu trả lời với tệp thực tế để xem bạn cảm thấy thế nào về chúng.
:%s/\v\n\n#\s+(.*)/^M^Mrunning "\1"/
(đã thêm cờ "ma thuật"). Thật sự rất khó để chọn một câu trả lời chính xác cho câu hỏi ban đầu của tôi, nhưng tôi cảm thấy câu trả lời này là gần nhất với câu trả lời dự kiến ban đầu của tôi. Nó cũng là người duy nhất hoạt động trong toàn bộ tập tin mà không cần chọn phạm vi.