Ada banyak waktu dalam kehidupan kerja saya sehari-hari sehingga saya perlu mengoperasikan fungsi tertentu, hal-hal seperti menyoroti atau mencari variabel, tetapi saya tidak pernah berhasil membatasi ruang lingkup pengeditan / pencarian.
Apakah ada cara di vim untuk secara selektif mengatakan, menemukan semua referensi $color
di dalam set kawat gigi ini, atau lipatan ini dll. Jika mungkin, akan ideal ini relatif generik, sehingga dapat diterapkan pada Mengedit / Mengganti teks.
Sebagai contoh:
$color = "#fff";
function PickColor () {
$color = "#bbb";
$newColors = ["#000", "#fbf", $color];
foreach ($newColors as $c) {
if ($c == "#fff") {
break;
}
}
}
$differentColor = $color;
Namun, kode ini adalah contoh yang relatif buruk, jika saya perlu mengganti semua instance $ color bagaimana orang melakukan ini dalam konteks fungsi PickColor. Sebagai contoh lain, menggunakan #
dan *
Anda dapat pergi ke contoh berikutnya dari objek teks itu, bagaimana Anda membatasi ruang lingkup pencarian hanya fungsi ini (pada dasarnya membungkus pencarian) bertentangan dengan seluruh file yang dapat menjangkau ribuan baris dan kehilangan tempat Anda, atau salah mengganti sesuatu di fungsi lain yang seharusnya tidak Anda miliki?
sumber
Jika Anda merasa nyaman mengambil rute plugin, ada NrrwRgn .
Anda memilih blok secara visual, lalu menjalankan
:NR
perintah, yang membuka buffer baru (dalam split) dengan teks yang dipilih. Anda dapat membuat modifikasi pada buffer ini, dan ketika Anda menyimpannya, buffer itu akan disimpan kembali ke file aslinya juga.Menurut pendapat saya, plugin ini memecahkan masalah dengan sangat baik, membiarkan Anda fokus pada operasi yang ingin Anda lakukan tanpa memikirkan kembali cara menerapkannya pada rentang tertentu.
sumber
Anda memilih blok yang Anda minati dalam mode garis visual (shift + v) dan kemudian Anda mengetik
:
dan perintah Anda yang sekarang akan berlaku untuk blok.Jadi, jika Anda ingin mengganti dalam seleksi, Anda dapat menjalankan
:s/string/replacement_string
sumber
VaB:s/\$color/replaced/g
Gunakan objek teks kurung '}' dan pilih di dalam kurung dengan 'i}'
pada baris dengan kurung kurawal pembukaan fungsi:
pertama pergi ke akhir baris (yang akan berada di atau di dalam kurung pembuka) kemudian untuk masuk ke pemilihan visual, kemudian pilih menggunakan objek teks kawat gigi. 'i}' ada di dalam kawat gigi 'a}' ada di sekitar kawat gigi.
Untuk bahasa yang tidak memiliki kawat gigi, Objek Teks Vim: Panduan Definitif menyarankan beberapa plugin:
ai
termasuk level indentasi saat ini dan baris di atas;ii
termasuk tingkat indentasi saat ini tidak termasuk baris di atas.ar
danir
, berdasarkan pada keberadaanend
kata kunci.sumber