16

Suppose I'm working with a file In Sublime Text 3 that contains multiple occurrences of a single character variable, c, which I want to rename to another name.

When I select one instance of that variable with my cursor, Sublime Text automatically highlights the other instances of that variable for me:

This visual highlight is enabled by the the setting: "match_selection": true, and clearly shows that sublime is smart enough to only highlight other instances of that character where it is relevant as a variable.

However despite this highlight indicating that it should be possible, it seems there is no easy way to now automatically select just these highlighted c variables.

If I want to quickly rename all instances of the variable c using multiple cursors, either with Quick Add Next (cmd+D) or Quick Find All (ctrl+cmd+G) instead of selecting only that variable c, I get every single instance of the character 'c' selected:

This is obviously not useful at all, since it has no correlation to the actual variable; It just blindly selected all letters "c", regardless of if they are the selected variable or not.

Is there a way to force Quick Add Next and Quick Find All, to behave like the highlighting rules that the match_selection setting uses? This would be much more useful in this case than simply blindly selecting every instance of the selected character(s).

Am I missing something? I can't find a Quick Find All Instances or Quick Add Next Variable option, or any way to customize the default behavior of Quick Find All and Quick Add Next. As far as I can tell, my only options are to either manually rename every instance of c, or write some custom regex to achieve the same result as the original highlighting algorithm.

Robotnik
  • 2,645
Johannes
  • 274

2 Answers2

24

The trick is to start with an empty selection, with your cursor just to the left of the word you want to select. Then, hit CtrlG (or AltF3 on Windows/Linux) to select all instances of that word:

lua code

or hit D (CtrlD on Win/Lin) to begin selecting them one at a time.

MattDMo
  • 5,409
0

When selecting and renaming all occurrences of a variable, this does not imply that all strings are to be renamed. For example 'c' may occur in many words, not being variables. In order to ONLY rename the occurrences that are variables one can use the anaconda add-on:

Right-mouse-click the variable

Select Anaconda -> Rename Object under cursor

Ps. One can Double-click the variable to check what the selection would be before executing the renaming.

Leo
  • 1