58

Can I create a custom snippet that takes a parameter that is replaced multiple times inside the code?

I tried something like:

<#class#> instanceOf<#class#>;

but it doesn't replace both class placeholders when I insert the snippet and write over the first parameter.

11
  • I was going to ask this also. Apparently, it does not work that way? Commented Jul 8, 2011 at 19:49
  • No it does not, it simply regards those as two separate fields. Commented Jul 8, 2011 at 19:58
  • What exactly are you trying to do? Commented Jul 27, 2011 at 14:43
  • I have some complex snippets that require the same identifier to be entered multiple times. If Xcode would replace the same marker in multiple positions inside the snippet it would save a lot of time and help avoid typos. Commented Jul 27, 2011 at 16:32
  • 2
    Anyone know what the state of this is in 2015 with Xcode 7? Commented Dec 1, 2015 at 23:57

2 Answers 2

29

In Xcode 10 we can replace placeholder tokens with the same name by doing this:

  1. Highlight the first token.
  2. Add other tokens with the same name to the selection by pressing ⌥⌘E once for each token. ⌥⇧⌘E selects previous tokens.
  3. Start typing. This activates multiple cursors so each token gets replaced.

It's not as quick as replacing every token with the same name by default, but it does give you more control over what gets replaced.

Sign up to request clarification or add additional context in comments.

2 Comments

Yeah, not perfect but better than "Find and replace" method I was using before
This selects all tokens, so if there are multiple token types they end up all being the same :(. Holding ctrl-shift and clicking lets you select the right ones.
26

This is not possible in Xcode 4.x at the time of writing (Sept. 2011).

If you want this feature back in Xcode 4.x, please go to bugreport.apple.com and report a duplicate for this rdar that I just preported:

Summary: Xcode 4 snippets with tokens of same name should sync while filling one of them.

Steps to Reproduce:
1. Define this snippet: extern NSString * const <#constant#>; NSString * const <#constant#> = @"<#constant#>";

  1. Drop it into your code.
  2. Hit tab to select instance of token <#constant#>.
  3. Type "NSMySuperCoolConstantString".

Expected Results:
5. NSString * const <#constant#> = @"<#constant#>"; should turn into NSString * const NSMySuperCoolConstantString = @"NSMySuperCoolConstantString"; as it used to do in v3.x.

Actual Results:
5. NSString * const <#constant#> = @"<#constant#>"; stays unchanged/unsynced.

Regression:

Notes:

Here is the rdar reference for duping:
rdar://10071607

And here a copy on OpenRadar:
http://openradar.appspot.com/radar?id=1327411


While you're at it: Feel free to dupe this rdar as well:

"Xcode 4: snippet functionality regressions"
rdar://9192757
http://openradar.appspot.com/9192757

4 Comments

If you can help me Date in Code Snippet
So, syncing tokens of the same name is not supported anymore?
Incredibly, this still seems to be the case in Xcode 8.2.
I just added a new dupe or this 34975813

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.