pengiriman vim - mencoba untuk menempatkan tanda kutip di string

1

Saya mencoba menggunakan perintah pengiriman vim untuk memberi tanda kutip di sekitar semua string karakter dalam satu baris teks, dan itu tidak berfungsi. Inilah yang saya lakukan

:s:\a*\a:\(submatch(0)\):g

Yang dilakukannya hanyalah mengganti semua string dengan string (submatch (0)). Bagaimana saya membuat vim melakukan apa yang saya coba lakukan?

MYV
sumber

Jawaban:

6

pengiriman bukan solusi terbaik untuk melakukan ini. Saya sedang melakukan bantuan\\=

Dan saya menemukan ini:

                *sub-replace-special* *:s\=*
When the {string} starts with "\=" it is evaluated as an expression, see
|sub-replace-expression|.  You can use that for any special characters.
Otherwise these characters in {string} have a special meaning:

Jika Anda bersikeras menggunakan pengiriman, Anda dapat menggunakannya dengan cara ini:

s:\a*\a:\='"'.submatch(0).'"'

Namun solusi yang lebih mudah dibaca adalah:

s:\a*\a:"\0"
rbernabe
sumber
4

Anda harus menangkap setiap pertandingan dengan mengelilingi pola dengan sepasang kawat gigi \(dan \). Setelah melakukan ini, Anda dapat menggunakan teks yang cocok sebenarnya dalam pola penggantian \1.

Perintah berikut melakukan apa yang Anda inginkan:

:s:\(\a*\a\):"\1":g
ambil dua
sumber