Genel Metin 3'te Yeniden Düzenleme Kodu


2

Şimdilik bunu Find All( Cntrl+ F old_var, alt+ enter new_var) ile yapıyorum , ancak bu yorum ve dizgilerimdeki sözcüklerin yerini alıyor.

Yer alan yorumlarda, bu cevap önerdi PyRefactor eklentisi gerektirir ipi . Bu araçlar benim amaçlarıma göre çok ağır olan varsayılanlara sahip gibi görünüyor. Sadece değişken python betiklerinde Sublime Text 3 ile değişken isimlerini yeniden düzenlemek istiyorum.

Yani bir senaryoda

# Where did my hat go?
hat = 0
print(hat)
print("hat")

hatDeğişken (değil dizeleri ne de yorumlarında) bir kısayol tuşu dokunarak başka bir şeyle değiştirilebilir. Özel bir proje klasörüne / konfigürasyonuna gerek yoktur ve birden fazla dosya arasında hiçbir şey değişmemiştir. Ne yazık ki, Find All hat -> llamayapar ...

# Where did my llama go?
llama = 0
print(llama)
print("llama")

DÜZENLE:

@ Toto'nun regex çözümünü takdir ediyorum, ancak henüz akıcı değilim ve daha tutarlı çalışan ve hatırlaması daha kolay bir yöntem istiyorum. Tüm global olarak tanımlanmış ve belirtilen değişkenleri (fonksiyon çağrıları argümanları, vb.) Tanımlayan ve basit bir Bul ve Değiştir'e izin veren bir eklenti var mı (ya da bir tane yazabilir miyim?)?


1
Satırın #
var firstName

Yeniden düzenlemeyi bu kadar kolaylaştıran bir IDE kullanmayı düşündünüz mü? JetBrains IDE'lerini bulana kadar Sublime'a sadık kalmıştım.
DrZoo 13:18

Yanıtlar:


1
  • Ctrl+H
  • bul: (?:^(?<!#).*\K|(<?!"))\bhat\b(?!")
  • Değiştir: llama
  • Düzenli ifadeyi kontrol et
  • Bütün kelimeyi kontrol et
  • Sargıyı kontrol et
  • Replace all

Açıklama:

(?:
    ^       : beginning of line
    (?<!#)  : negative lookbehind, zero-length assertion that makes sure we don't have # before
    .*      : 0 or more any character
    \k      : forget all we have seen until this position
  |         : OR
    (?<!")  : negative lookbehind, zero-length assertion that makes sure we don't have " before
)
\b      : word boundary to not match chat, remove it if you want to match chat also
hat     : literally
\b      : word boundary to not match hats, remove it if you want to match hats also
(?!")   : negative lookahead, zero-length assertion that makes sure we don't have " after

Verilen:

# Where did my hat go?
hat = 0
chat = 0
print(hat)
print("hat")
print(chat)

Verilen örnek için sonuç:

# Where did my hat go?
llama = 0
chat = 0
print(llama)
print("hat")
print(chat)

Önce:

görüntü tanımını buraya girin Sonra:

görüntü tanımını buraya girin


1
Ne hakkında "red hat"veya "red " + hat? Her ikisi de değiştirilecek, ancak yapmamalılar
Máté Juhász

1
@ MátéJuhász: "red hat"değiştirilmez ve "red " + hathale "red " + llamagelmez mi?
Toto

Tamam, zekice, peki ya "red hat and gloves"?
Máté Juhász

1
@ MátéJuhász: Elbette, bu regex okunmaz hale gelecektir Böyle bir durum için bu durumda :( çalışmayacaktır Bu sigara düzenli dili ayrıştırılırken regex limitini gösteren olduğunu..
Toto

Her zaman kurtarmaya regex güvenebilir. Ne yazık ki bu dava da işe yaramıyor: "hat ate the hw"olur "llama ate the hw".
Wassadamo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.