変数のすべてのインスタンスを選択し、Sublimeで変数名を編集する方法


428

コードで変数(文字列だけでなく)を選択すると、その変数の他のすべてのインスタンスにそれらの周りにストローク(白い輪郭)が表示されます。

ここに画像の説明を入力してください

変数のすべてのインスタンスを選択して一度にすべて編集できるキーボードショートカットはありますか?


私が試したもの:

DKU私は、1つずつを選択することができますが、私は手動で非可変文字列の一致を除外することがあります。

ここに画像の説明を入力してください

そして、を使用するCtrlGと、一致するすべての文字列が選択されます

ここに画像の説明を入力してください

明らかに、Sublimeは変数と文字列の一致を区別できます。変数の一致のみを選択する方法はありませんか?

回答:


604
  1. 変数にカーソルを置きます。

    注:重要なのは、空の選択から始めることです。ハイライトしないでください。そこにカーソルを置くだけです。

変数上のテキストカーソル

  1. D必要に応じて押します。Macではありませんか?を使用しCtrlDます。

強調表示された変数のより多くのインスタンス

うまくいきませんでしたか?何も選択されていない状態で開始してください。

その他のコマンド:

すべて検索: CtrlGすべてのオカレンスを一度に選択します。Macではありませんか?AltF3

選択を元に戻す: U後ろに戻ります。Macではありませんか?CtrlU

Quick Skip Next: KD次の発生をスキップします。Macではありませんか?CtrlKCtrlD

崇高なドキュメント


14
⌘とは何ですか?非MACキーボードでこれをどのように行いますか?
Bjarke Freund-Hansen 2014

6
少なくともST3では、他の⌘-DコマンドなしでCtrl-⌘-Gを実行できます。残念ながら、メニューにその誤ったラベルが付けられています!
ワトソニック2014年

30
これは、OPの元の質問には答えません。彼は特に尋ねましたvariable (not just any string)。これは単に、文字列のすべての出現を選択します。
ベジャミンリチャーズ2014

17
@BetjaminRichards変数を選択(強調表示)していないことを確認してください。カーソルを変数に移動し、⌘Dを押します。ちなみに、これはまさにMattDMoの答え(stackoverflow.com/a/16844924/483520)で私が抱えていた問題です。
Nolan Amy

2
@MuhammadUmer境界を考慮に入れて、単語に一致するすべてのもの。真の変数検索ではありませんが、単純な文字列照合よりはるかに優れています。
ノーランエイミー

135

質問はMacについてですが、Ubuntuの回答を検索してここにたどり着いたので、私の回答が誰かに役立つと思います。

それを行う簡単な方法:AltF3


10
内部にfooを持つすべてのものを選択します。
user1767754

1
この回答は質問用です:stackoverflow.com/q/12162047/2270563。しかし、ここでは質問が異なります。すべての一致ではなく変数のみを選択します。
Ram

4
@ user1767754 foo内部にあるものをすべて選択したくない場合は、最初のものをまだ選択しないでくださいfoo。代わりに、言葉だけでカーソルを置きfoo、その後Alt-F3。Voila
Anwar

この答えは間違っています。これによりfoo、強調表示されたインスタンスだけでなく、すべてのインスタンスが選択されます。
アンドレ・C.アンデルセン

KDEでは機能しないので、{"keys":["alt + d"]、 "command": "find_all_under"}をキーバインディングファイルに追加しました:Preferences> Key BIndings。alt + dはそこにあるものと競合するようには見えません。
user1985553

47

多くの努力にもかかわらず、私はあなたがやろうとしていることをするための組み込みまたはプラグイン支援の方法を見つけていません。プログラムは最初に強調表示したときと区別できるので、それ可能であるべきだと私は完全に同意しますが、それを行う方法を誰も知らないようです。foobuffoon


ただし、Sublime Text 2で単語を選択するための便利なキーコンボは次のとおりです。

CtrlG-現在の単語のすべての出現を選択AltF3します(Windows / Linuxの場合)

D-現在の単語の次のインスタンスを選択します(CtrlD

  • KD-現在のインスタンスをスキップして、次のインスタンスを選択します(CtrlKCtrlD
  • U-「ソフトアンドゥ」、前の選択に戻ります(CtrlU

EH-現在の選択を検索と置換(CtrlECtrlH)の「検索」フィールドとして使用します


6
ストロークのみの発生の周りに表示されますが、変数名、しばらくは、⌘+D文字列のすべての出現に作用します。たとえば、を強調表示するとfoo、崇高にすべての変数foosが見事にストロークさfooれますが、eject_buffoon関数内の文字列はストロークされません。それでも、上記のキーコンボを使用する⌘+Kと、eject_bufbarn関数が使用されないように、文字列の一致を手動で削除する必要があります。もっと良い方法があるに違いない!
Nolan Amy

@Nolan-気軽に質問をして、誰か提案があるかどうかを確認してください。一つの可能な回避策は、選択することですfoo_(fooとそれの後のスペース)または_foo_(前と後の両方のスペース)、その後、使用し⌘-DたりCtrl-⌘-D
MattDMo 2013

7
これはまさにOPが求めていた問題だと私は思います。具体的には、「変数」(「テキスト領域」や「文字列」ではない)と「ストローク」(「強調表示」ではない)を言います。そして、この質問は、stackoverflow.com / questions / 12162047 / …の複製ではありません。それは、「強調表示された選択」と言っています。また、当然のことながら、多くの場合のように現れ、、、と、そうかなり不満足なものです。foo(foo)_foo,(foo,_foo}_foo_
Nolan Amy

21

これでうまくいきました。置き換える単語の先頭にカーソルを置いて、

CtrlKCtrlDCtrlD...

これにより、単語のインスタンスがいくつでも選択され、置換を入力できます。


1
これは、言及された答えとは別に私にとってはうまくいった答えでした。良い !
Akash

これは質問の答えにはなりません。
MD004

@ MD004どうですか?
ホブ

@hobs問題は、「それらすべてのインスタンスを一度に選択する」方法です。タイトルの質問のフレーズが曖昧であることは認めますが、投稿の後半でOPがソリューションを説明し、これにより「1つずつ選択されますが、非可変文字列の一致を手動で除外する必要があります」と述べます「これは不十分です。ところで、これが不十分な例のシナリオは、たとえば、置き換えたい単語が1000回出現する場合です。この場合、手動で選択することはできません。
MD004

1
ええ、わかりました。ありがとうございました。これで、OPの状況と1000回の発生例に対して、受け入れられた回答がはるかに優れている理由がわかります。
ホブ2019

12

マジックは、空の選択から始める必要があるため、複数選択する単語/文字の前にカーソルを置き、Ctrl+ を押しますD


2
これが単一文字の変数に対する答えです。その他の変数については、最初に変数内の任意の場所にカーソルを置くことができます。
manish_s

これはSublime 3で私にとっては機能し、ファイル全体ではなく関数内などの変更を小さな領域に制限したい場合は、これを行う最も簡単な方法です。もちろん、macOS用のCommand-D。
ライアンH.

10

私にとって、これはSublimeの最大の間違いです。Alt+ F3覚え/到達するのは難しい、とCtrl+ Shift+はG考慮意味をなさないCtrl+は、D「選択した項目の横にインスタンスを追加」です。

これをユーザーキーバインディングに追加します([設定]> [キーバインディング])。

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

これで何かを強調表示してCtrl+ Shift+を押すDと、ファイル内の他のすべてのインスタンスが選択に追加されます。


1
これが実際に元の質問に答える唯一の答えです!
kmundnic



4

user1767754が言ったように、ここでの鍵は最初は何も選択しないことです。

変数名の中にカーソルを置くだけで、ダブルクリックして選択しないでください。単一文字変数の場合は、変数の先頭または末尾にカーソルを置いて、最初は何も選択しないようにします。

Cmd+ Dを押し続けて次の変数を選択するか、Ctrl+ Cmd+ Gを押してすべての変数を一度に選択します。変数のみを魔法のように選択します。


0

複数のファイル間で文字列を置き換える方法を探しているときに誰かがこの質問に出くわした場合に備えて、それはCommand+ Shift+F

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.