web-dev-qa-db-ja.com

崇高なテキスト3のリファクタリングコード

現在、私はFind AllCntrl+Fold_var、 alt+enternew_var)、しかしこれは私のコメントと文字列の単語を置き換えます。

この回答 のコメントは PyRefactorプラグイン を提案しました ロープ が必要です。これらのツールのデフォルトは、私の目的には手に負えないもののようです。スタンドアロンのpython Script with Sublime Text3で変数名をリファクタリングしたいだけです。

したがって、次のようなスクリプトで

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

hat変数(文字列やコメントではない)は、ホットキーを押すだけで他の変数に置き換えることができます。特別なプロジェクトフォルダ/構成は必要なく、複数のファイル間で何も変更されていません。残念ながら、 Find Allhat -> llamaは...

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

編集:

@Totoの正規表現ソリューションには感謝していますが、まだそれに精通しておらず、より一貫して機能し、覚えやすい方法が必要です。グローバルに定義および記述されたすべての変数(関数呼び出しの引数など)を識別し、単純な検索と置換を可能にするプラグイン(またはプラグインを作成できますか?)はありますか?

2
Wassadamo
  • Ctrl+H
  • 検索:(?:^(?<!#).*\K|(<?!"))\bhat\b(?!")
  • 置換:llama
  • 正規表現を確認してください
  • 単語全体をチェック
  • ラップをチェック
  • Replace all

説明:

(?:
    ^       : 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

与えられた:

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

与えられた例の結果:

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

前:

enter image description here後:

enter image description here

1
Toto