Saya sering menemukan diri saya mencoba untuk menggantikan misalnya foo
dengan bar
dan bar
dengan foo
di buffer.
Cara saya biasanya melakukannya adalah:
- 3 permintaan-Menggantikan:
aaa -> @@@
,bbb -> aaa
,@@@ -> bbb
- menyerah pada otomatisasi dan lakukan penggantian dengan tangan
Saya kira itu mungkin untuk mendapatkan sesuatu yang bekerja menggunakan ,
sintaks query-replace-regexp
untuk menguji apakah string yang cocok adalah aaa
atau bbb
. Tetapi sintaks yang dihasilkan akan terlalu rumit, jadi saya tidak pernah benar-benar mencobanya.
Masalahnya adalah, mengingat betapa umum tugas itu, saya pikir harus ada yang lebih baik, satu langkah, cara melakukannya, baik built-in atau dalam paket yang ada. Disana?
query-replace
, saya tahu bahwa biasanya lebih cepat M-% str1 str2
daripada memindahkan titik dan melakukan perubahan dengan tangan. Itu bagus, karena saya tidak perlu membuang waktu untuk memikirkan apa yang akan tercepat, bahkan jika hanya ada satu kejadian str1
. Idealnya, saya ingin inversi teks sama cepatnya, sehingga saya bisa menggunakannya tanpa memikirkannya juga.
(setq a (prog1 b (setq b a)))
. Dan bahkan mungkin ada cara yang lebih sederhana.
\,(if \1 "b" "a")
sangat jelek (terhadap regexp \(a\)\|b
), tetapi masih kata-kata harus diketik dua kali, jika itu mengganggu Anda.
\(aaa\)\|bbb
?