Sublime Text:选择变量的所有实例并编辑变量名称

Osk*_*son 413 keyboard-shortcuts key-bindings sublimetext sublimetext2 sublimetext3

我是Sublime的新手,我刚刚发现,如果我在代码中选择一个变量(不仅仅是任何字符串),该变量的所有其他实例都会在它们周围得到一个笔划(白色轮廓):

在此输入图像描述

是否有键盘快捷键可以让我选择变量的所有实例并一次编辑它们?


我试过的事情:

使用D,KU让我逐个选择它们,但我必须手动排除非变量字符串匹配:

在此输入图像描述

使用CtrlG只需选择所有字符串匹配:

在此输入图像描述

显然,Sublime能够区分变量匹配和字符串匹配.有没有办法只选择变量匹配?

Nol*_*Amy 586

1.将变量   放入变量 ⚠️不要选择任何东西 - 只需将光标放在那里.

文本光标在变量上

2. D根据需要.不在Mac上?CtrlD

突出显示更多变量实例

没用?这很棘手.这是诀窍:从空选中开始.微妙的,对吧?

更多命令:

全部查找: CtrlG一次选择所有出现.不在Mac上?AltF3

撤消选择: U向后退步.不在Mac上?CtrlU

快速跳过下一个: KD跳过下一个出现.不在Mac上?CtrlKCtrlD

崇高的文件


h/t adzenith.

  • 这不符合OP的原始问题.他特意问过`变量(不仅仅是任何字符串)`.这只是选择所有出现的字符串. (29认同)
  • @BetjaminRichards确保你没有选择(突出显示)变量.只需将光标移动到变量上,然后按⌘D.顺便说一下,这正是我对MattDMo的回答(http://stackoverflow.com/a/16844924/483520)的问题. (14认同)
  • 什么是⌘,如何在非MAC键盘上执行此操作? (13认同)
  • 至少在ST3中,您可以在没有其他⌘-D命令的情况下执行Ctrl-⌘-G.不幸的是,它在菜单中非常贴错标签! (6认同)
  • @MuhammadUmer任何匹配这个词的东西,考虑到边界.不是真正的变量搜索,但比简单的字符串匹配要好得多. (2认同)
  • @Doglas在Sublime Text 3中,不要"Ctrl"`D`,只需要`Alt``F3`. (2认同)

ela*_*sca 133

我知道这个问题是关于Mac的,但我在这里搜索Ubuntu的答案,所以我想我的答案可能对某人有用.

简单的方法:AltF3.

  • 它还在选择里面有foo的东西. (10认同)
  • @ user1767754如果你不想选择里面有`foo`的所有内容,那么就不要选择第一个`foo`.而只需将光标放在单词`foo`然后再单击'Alt-F3`.瞧 (3认同)

Mat*_*DMo 45

尽管付出了很多努力,但我还没有找到内置或插件辅助的方式来做你想做的事情.我完全同意,这应该是可能的,因为程序可以区分foobuffoon当你第一次选中它,但似乎没有人知道做这件事的方式.


但是,这里有一些有用的关键组合,用于在Sublime Text 2中选择单词:

CtrlG- 选择所有出现的当前单词(AltF3在Windows/Linux上)

D- 选择当前单词的下一个实例(CtrlD)

  • K,D- 跳过当前实例并继续选择下一个(CtrlK,CtrlD)
  • U- "软撤消",移回上一个选择(CtrlU)

E,H- 使用当前选择作为查找和替换(CtrlE,CtrlH)中的"查找"字段

  • 但是,笔划仅出现在*变量名称*的出现位置,而"⌘+ D"则出现在所有出现的字符串上.例如,如果我突出显示`foo`,那么sublime会在我的`eject_buffoon`函数中奇妙地描述所有变量`foo`s,而不是字符串`foo`.然而,使用上面的关键组合,我不得不手动"⌘+ K"输出字符串匹配,以避免使用`eject_bufbarn`函数.肯定有更好的办法! (6认同)
  • 我实际上认为这正是OP提出的问题.他特别说"*variable*"(不是"text region"或"string")和"*stroke*"(不是"highlighting").这个问题*不是*http://stackoverflow.com/questions/12162047/sublime-text-editor-how-to-select-all-instances-of-selected-region的重复 - 那个人说"突出显示的选择".当然,`foo`经常显示为`(foo)`,`_foo,`,`(foo,`和`_foo}`,所以`_foo_`非常令人不满意. (6认同)

hob*_*obs 21

对我有用.将光标放在要替换的单词的开头,然后

CtrlK,CtrlD,CtrlD...

这应该选择任意数量的单词实例,然后你可以输入替换.

  • 这是一个简单而明确的答案 (4认同)

use*_*754 12

魔术是,你必须从一个空的选择开始,所以把你的光标放在你要多选的单词/字符的前面并按Ctrl+D

  • 这是单个字符变量的答案.对于任何其他变量,您可以将光标放在变量的任何位置以开始. (2认同)

Tra*_*ter 8

对我来说,这是Sublime最大的错误.alt + f3很难达到/记住,并且ctrl + shift + g没有意义,因为ctrl + d是"将下一个实例添加到选择中".

将其添加到用户密钥绑定(首选项>键绑定):

{ "keys": ["ctrl+shift+d"], "command": "find_all_under" },
Run Code Online (Sandbox Code Playgroud)

现在你可以突出显示一些内容,按Ctrl+ Shift+ d,它会将文件中的每个其他实例添加到选择中.

  • 这是真正回答原始问题的唯一答案! (2认同)

man*_*h_s 6

正如 user1767754 所说,这里的关键是最初不要进行任何选择。

只需将光标放在变量名称内,不要双击选择它。对于单字符变量,将光标放在变量的前端或末尾,以便最初不进行任何选择。

现在继续把球击Cmd+D为下一个变量选择或Ctrl+ Cmd+G可以一次选择所有的变量。它会神奇地只选择变量。


Fra*_* Yu 5

它是由@watsonic提到,在在MacOS崇高的文本3,从一个空的选择,只是??GAltF3在Windows上)的伎俩,而不是?D+??G在崇高的文本2。