12

我想知道是否已经存在一种方法可以将选择扩展到 Sublime Text 2 框建议的所有区域,因此不必一直按Ctrl-D有时Ctrl- K-D使用 Ctrl+D 时如何跳过匹配中所示Sublime Text 2中的多个选择?

90% 的时间屏幕上的框正是我想要多选的,如果有一个一键选项这样做会非常方便。

例如,如果你有

foo(2,42,23,2,2)

然后单击第一个 2,框将仅显示在三个单个 2 周围。这些我想用一个命令/宏来选择。

如果你选择Ctrl-D你必须跳过 42 和 23 中的 2 和Ctrl- K- D

如果不存在这样的东西,任何关于为此类功能编写插件的指针将不胜感激。

更新:我得到了一个很好的建议来使用Alt+ F3,这对于在整个文件中进行更改非常棒。但是,将多选的范围限制为当前可见页面或标签或括号或其他内容也是有益的。

4

3 回答 3

12

您可以在任何“2”之前或之后单击,然后在 Windows 和 Linux 上使用Atl+或+选择所有 2F3Ctrl⌘</kbd>+G on OS X.

于 2013-01-16T15:15:50.870 回答
8

对于这种情况,我做了以下操作:

输入一个条目Key bindings - User

{ "keys": ["alt+s"], "command": "toggle_in_selection", "context":
    [
        { "key": "setting.is_widget", "operator": "equal", "operand": true }
    ]
},

注意:您可以选择其他组合键。

然后,选择要搜索的文本。您可以使用ctrl+L选择一行,选择您所在的括号内容,或菜单中ctrl+shift+m列出的任何其他方式,或任何其他方式。Selection


提示:创建新文件,选择文件名User.sublime-commands并将其存储在存储Packages/User新插件或用户键绑定的文件夹中。并将此代码段放入该文件中:

[
    // Selection Menu
    { "caption": "Selection: Expand to Paragraph", "command": "expand_selection_to_paragraph" },
    { "caption": "Selection: Expand to Scope", "command": "expand_selection", "args": {"to": "scope"} },
    { "caption": "Selection: Expand to Brackets", "command": "expand_selection", "args": {"to": "brackets"} },
    { "caption": "Selection: Expand to Indentation", "command": "expand_selection", "args": {"to": "indentation"} },
    { "caption": "Selection: Expand to Tag", "command": "expand_selection", "args":     {"to": "tag"} }
]

它还将菜单中的那些扩展选择选项添加Selection到命令面板中,因此您不必记住快捷方式。您可以将“标题”更改为最适合您的内容。


选择要搜索的文本后,按ctrl+fctrl+i(搜索或增量搜索),使用上方的快捷方式,切换“选择中”按钮(搜索栏左侧的第六个按钮,看起来像箭头在垂直条上向右和向下指向)。(可选:按 alt+w 切换“whole-words”按钮(看起来像引号),以防您想匹配 free 2in foo(2,42,23,2,2),而不匹配2in 42)。调整选择后,alt+enter选择所有匹配项-> 完成。

你不必写你要搜索的东西,你可以先选择它然后按ctrl+e(“slurp_find_string”命令)把它放在搜索栏中,稍后打开搜索栏它就会在那里。

所以整个过程是这样的:

  1. (可选)ctrl+e在您要搜索的选定文本上,因此您不必稍后再编写
  2. 使用任何方式选择您要搜索的所有文本
  3. ctrl+f或者ctrl+i打开一个搜索栏,如果你没有做 1.,写下你搜索的内容
  4. 如果未切换,则在选择中切换,如果需要,切换整个单词
  5. 找到所有,alt+enter你就完成了

一开始听起来有点复杂,但是一旦你做了 10 次,整个过程(除了第 2 步)不会花费你超过一秒钟的时间。另外,如果你调整一些崇高的设置,你可以让它为你自动切换一些东西,例如在任何选择时自动 ctrl+e,或者在你打开带有打开选择的搜索栏时自动切换选择。

注意:如果您使用 mac 或 windows,您的快捷方式可能会有所不同。

希望对您有所帮助,如果有什么不清楚的地方,请多问...

编辑:我玩了一段时间的关键设置,最后得到了这个:

// without whole-words
{ "keys": ["ctrl+space", "f"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse":false, "in_selection": false, "whole_word": false}, "context":
    [
        { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }
    ]
},
{ "keys": ["ctrl+space", "f"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse":false, "in_selection": true, "whole_word": false}, "context":
    [
        { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
    ]
},

//with whole-words
{ "keys": ["ctrl+space", "w"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse":false, "in_selection": false, "whole_word": true}, "context":
    [
        { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true }
    ]
},
{ "keys": ["ctrl+space", "w"], "command": "show_panel", "args": {"panel": "incremental_find", "reverse":false, "in_selection": true, "whole_word": true}, "context":
    [
        { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true }
    ]
},

如果你把它放在某个地方Key bindings - User,它会给你两个快捷方式,"ctrl+space", "f"ctrl+space第一个,然后是f,与 类似"ctrl+k", "ctrl+d")和"ctrl+space", "w". 第一个为您提供禁用全词的增量搜索面板,第二个启用全词。根据您按下快捷方式时是否选择了某些内容,它们都会预先选择选择中的内容。如果您看一下,您应该几乎了解如何根据自己的需求对其进行调整。

于 2013-01-20T17:26:52.760 回答
1

在给出“foo(2,42,23,2,2)”的示例中,如果您只想多选单个“2”并排除“23” - 您可以将光标放在“,2”之一之后'| 出现,然后在不选择任何文本的情况下按 [CTRL]+[D] 或 [ALT]+[F3]

于 2022-01-28T17:07:56.113 回答