Sublime'da bir değişkenin tüm örneklerini seçme ve değişken adını düzenleme


428

Kodumda bir değişken (yalnızca herhangi bir dize değil) seçersem, bu değişkenin diğer tüm örnekleri etrafında bir kontur (beyaz anahat) alır:

resim açıklamasını buraya girin

Değişkenin tüm bu örneklerini seçmeme ve hepsini bir kerede düzenlememe izin verecek bir klavye kısayolu var mı ?


Denediğim Şeyler:

D,, Kve Ubunları tek tek seçmeme izin veriyor, ancak değişken olmayan dize eşleşmelerini el ile hariç tutmam gerekiyor:

resim açıklamasını buraya girin

Ve kullanmak CtrlGbasitçe tüm dize eşleşmelerini seçer :

resim açıklamasını buraya girin

Açıkçası, Sublime değişken ve dize eşleşmeleri arasında ayrım yapabilir. Yalnızca değişken eşleşmelerini seçmenin bir yolu yok mu?

Yanıtlar:


604
  1. İmleci değişkene yerleştirin.

    Not: anahtar boş bir seçimle başlamaktır. Vurgulama; sadece imlecini oraya koy .

değişken üzerinde metin imleci

  1. DGerektiği gibi basın . Mac'te değil misiniz? Kullanın CtrlD.

vurgulanan daha fazla değişken örneği

Çalışmadı mı? Seçili hiçbir şeyle başlamadığınızdan emin olarak tekrar deneyin .

Diğer komutlar:

Tümünü Bul: CtrlG tüm olayları bir kerede seçer. Mac'te değil misiniz?AltF3

Seçimi Geri Al: U geriye doğru gider. Mac'te değil misiniz?CtrlU

Hızlı Atla Sonraki: bir KD sonraki tekrarlamayı atlar. Mac'te değil misiniz?CtrlKCtrlD

Yüce Dokümanlar


14
⌘ nedir, MAC olmayan bir klavyede bunu nasıl yaparsınız?
Bjarke Freund-Hansen

6
en azından ST3'te Ctrl-⌘-G'yi diğer D-D komutu olmadan yapabilirsiniz. Onun korkunç menüde ne yazık ki yanlış etiketlenmiş!
watsonic

30
Bu OP'nin orijinal sorusuna cevap vermiyor. Özellikle sordu variable (not just any string). Bu, dizenin tüm örneklerini seçer.
Betjamin Richards

17
@BetjaminRichards Değişkeni seçmediğinizden (vurgulamadığınızdan) emin olun. İmleci değişkenin üzerine getirin ve ⌘D tuşuna basın. Bu arada, tam olarak MattDMo'nun cevabı ile ilgili sorunum vardı ( stackoverflow.com/a/16844924/483520 ).
Nolan Amy

2
@MuhammadUmer Sınırları dikkate alarak kelimeyle eşleşen her şey. Gerçek bir değişken arama değil, basit dize eşleşmesinden çok daha iyi.
Nolan Amy

135

Sorunun Mac'lerle ilgili olduğunu biliyorum, ama buraya Ubuntu'nun cevabını aramak için geldim, bu yüzden cevabımın biri için yararlı olabileceğini düşünüyorum.

Bunu yapmak için kolay yolu: AltF3.


10
hala içinde foo olan her şeyi seçiyor.
user1767754

1
Bu cevap şu soru içindir: stackoverflow.com/q/12162047/2270563 . Ama burada soru farklı. Tüm eşleşmeler yerine yalnızca değişkenleri seçmek için.
Ram

4
@ user1767754 İçinde bulunanların tümünü seçmek istemiyorsanız foo, ilkini zaten seçmeyin foo. Bunun yerine kelimeye bir imleç yerleştirin foove sonra Alt-F3. Voila
Anwar

Bu cevap yanlış. Bu, fooyalnızca vurgulananları değil, tüm örneklerini seçecektir .
André C. Andersen

KDE'de çalışmıyor, bu yüzden sadece anahtar bağlama dosyasına {"keys": ["alt + d"], "command": "find_all_under"} ekledim: Tercihler> Key BIndings. alt + d orada hiçbir şeyle çatışmıyor gibi görünüyor.
user1985553

47

Fazla çabaya rağmen, yapmaya çalıştığınız şeyi yapmak için yerleşik veya eklenti destekli bir yol bulamadım. Tamamen bu kabul etmelidir programı ayırt edebilirsiniz gibi mümkün foodan buffoonönce onu vurgulamak zaman, ama kimse bunu yapmanın bir yolunu biliyor gibi görünüyor.


Ancak, Yüce Metin 2'deki kelimeleri seçmek için bazı yararlı tuş kombinasyonları şunlardır:

CtrlG- geçerli kelimenin tüm tekrarlarını seçer ( AltF3Windows / Linux'ta)

D- geçerli kelimenin bir sonraki örneğini seçer ( CtrlD)

  • K, D- geçerli örneği atlar ve bir sonrakini seçmeye devam eder ( CtrlK, CtrlD)
  • U- "yumuşak geri al", bir önceki seçime geri döner ( CtrlU)

E, H- Bul ve Değiştir'de ( CtrlE, CtrlH) geçerli seçimi "Bul" alanı olarak kullanır


6
Ancak kontur, değişken adının yalnızca tekrarları etrafında görünürken ⌘+D, dizenin tüm tekrarları üzerinde etkili olur. Ben vurgulamak Örneğin, foo, yüce harika Tüm değişken felç fooler, ancak dize foobenim de eject_buffoonişlevi. Ve yine de yukarıdaki tuş kombinasyonlarını kullanarak, ⌘+Kbir eject_bufbarnişleve sahip olmaktan kaçınmak için dize eşleşmelerini manuel olarak çıkarmak zorunda kaldım . Daha iyi bir yol olmalı!
Nolan Amy

@Nolan - soru sormaktan ve herhangi birinin önerisi olup olmadığını görmek için çekinmeyin . Olası bir geçici çözüm foo_(foo ve arkasından boşluk) veya _foo_(hem önce hem de sonra boşluklar ) seçmek ve sonra ⌘-Dveya kullanmaktır Ctrl-⌘-D.
MattDMo

7
Aslında bu tam olarak OP'nin sorduğu soru. Özellikle " değişken " ("metin bölgesi" veya "dize" değil) ve " kontur " ("vurgulama" değil) diyor. Ve bu soru stackoverflow.com/questions/12162047/… 'in bir kopyası değil - biri "vurgulanmış seçim" diyor. Ayrıca, tabii ki, çoğu zaman olduğu gibi görünür , , , ve bu yüzden oldukça tatmin edici. foo(foo)_foo,(foo,_foo}_foo_
Nolan Amy

21

Bu benim için çalıştı. İmlecinizi değiştirmek istediğiniz kelimenin başına getirin, ardından

CtrlK, CtrlD, CtrlD...

Bu, sözcüğün istediğiniz kadar örneğini seçmelidir, o zaman değiştirme işlemini yazabilirsiniz.


1
Bahsedilen cevap için benim için ayrı çalışan cevap buydu. Güzel!
Akash,

Bu soruya cevap vermiyor.
MD004

@ MD004 Nasıl?
ocaklar

@hobs Soru, "tüm bu örneklerin bir kerede nasıl seçileceği" dir . Başlıktaki sorunun ifadesinin belirsiz olduğunu itiraf edeceğim, ancak daha sonra gönderide OP çözümünüzü anlatıyor ve bunun "birer birer seçildiğini, ancak değişken olmayan dize eşleşmelerini manuel olarak hariç tutmam gerektiğini söylüyor "bu tatmin edici değil. Btw, bunun tatmin edici olmadığı örnek bir senaryo, örneğin, değiştirmek istediğiniz kelimenin 1000 tekrarının olduğu, bu durumda bunları manuel olarak seçmenin bir seçenek olmadığıdır.
MD004

1
Ahh, anlıyorum. Teşekkür ederim. Şimdi kabul edilen cevabın OP'nin durumu ve 1000 oluşum örneğiniz için neden daha iyi olduğunu görüyorum.
Ocaklar

12

Sihir, boş bir seçimle başlamak zorundasınız, bu yüzden imlecinizi çoklu seçim yapmak istediğiniz kelimenin / karakterin önüne getirin ve Ctrl+ tuşuna basın D.


2
Bu, tek karakterli değişkenlerin cevabıdır. Diğer değişkenler için, imleci başlangıçta değişkenin herhangi bir yerine koyabilirsiniz.
manish_s

Bu, Sublime 3'te benim için çalışıyor ve değişiklikleri tüm dosyanın aksine bir işlev içinde olduğu gibi daha küçük bir alanla sınırlamak istiyorsanız bunu yapmanın en basit yoludur. Elbette macOS için Command-D.
Ryan H.

10

Bana göre bu, Yüce'deki en büyük hatadır. Alt+ ' F3nın ulaşılması / hatırlanması zordur ve Ctrl+ Shift+ + "seçime bir sonraki örneği ekle" Gdikkate alındığında bir anlam ifade etmez .CtrlD

Bunu Kullanıcı Anahtar Bağlamalarınıza ekleyin (Tercihler> Anahtar Bağlama):

{ "keys": ["ctrl+shift+d"], "command": "find_all_under" },

Artık bir şeyi vurgulayabilir, Ctrl+ Shift+ tuşlarına basabilirsiniz Dve dosyadaki diğer tüm örnekleri seçime ekler.


1
Asıl soruyu cevaplayan tek cevap bu!
kmundnic

Hala dizeleri ve yorumları seçer
Wassadamo

4

Oluyor @watsonic bahsettiği Mac OS üzerinde Sublime Text 3'te, bir ile başlayan o boş seçimi basitçe, G( AltF3yerine, hile yapar Windows üzerinde) D+ GSublime Text 2.


4

User1767754'ün dediği gibi, buradaki anahtar başlangıçta herhangi bir seçim yapmamaktır.

İmleci değişken adının içine yerleştirin, seçmek için çift tıklamayın. Tek karakter değişkenleri için, başlangıçta herhangi bir seçim yapmamak için imleci değişkenin önüne veya sonuna yerleştirin.

Şimdi isabet tutmak Cmd+ Dsonraki değişken seçimi için veya Ctrl+ Cmd+ Gkerede tüm değişkenleri seçme. Sadece değişkenleri sihirli bir şekilde seçecektir.


0

Birden fazla dosyada bir dizeyi değiştirmek için bir yol ararken başkalarının bu soruya tökezlemesi durumunda, Command+ Shift+F

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.