Saya memiliki file dengan banyak pengguna default. Saya ingin mengubah beberapa teks, tapi saya kesulitan membuat korek api dan mengganti. Menggunakan contoh berikut:
###############################################################################
# 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
Saya ingin mengganti # Trackpad: ...
denganrunning "Trackpad: ..."
Memecah masalah, saya datang dengan sesuatu menggunakan penguji regex:
/\n\n#\s(.*)/g
Jika saya mencoba dan menggunakan ini di Vim, itu tidak berfungsi untuk saya:
:/\n\n#\s(.*)/running "\1"/g
Saya kira masalah saya bermuara pada dua pertanyaan spesifik:
- Bagaimana saya bisa menghindari mencari
\n
karakter, dan sebaliknya memastikan#
tidak muncul di akhir grup pencarian? - Bagaimana saya bisa secara efektif menggunakan kelompok tangkap?
Ada beberapa jawaban bagus di bawah ini. Sulit untuk memilih di antara ketiganya, namun saya merasa jawaban yang dipilih adalah yang paling akurat untuk spesifikasi asli saya. Saya sarankan Anda mencoba ketiga jawaban dengan file yang sebenarnya untuk melihat bagaimana perasaan Anda tentang mereka.
:%s/\v\n\n#\s+(.*)/^M^Mrunning "\1"/
(menambahkan bendera "ajaib"). Sangat sulit untuk memilih jawaban yang benar untuk pertanyaan awal saya, tetapi saya merasa jawaban ini adalah yang paling dekat dengan jawaban asli saya yang diharapkan. Ini juga satu-satunya yang berfungsi di seluruh file tanpa perlu memilih rentang.