【问题标题】:VSCode - Is there a way to customise double-click select behaviour?VSCode - 有没有办法自定义双击选择行为?
【发布时间】:2016-04-19 07:11:50
【问题描述】:

特别是对于 php,传统上在其他编辑器(例如 np++)中,当您双击变量名称时,例如,它会选择不带“$”的名称。在 VSCode 中,它选择变量名加上“$”,如果有的话,通常还会选择一个尾随“-”。

$foo->bar();

当前行为:

双击“foo”选择:

$foo-

期望的行为:

双击“foo”选择:

foo

编辑:这是 github 问题:https://github.com/Microsoft/vscode/issues/2036

【问题讨论】:

    标签: visual-studio-code


    【解决方案1】:

    由于这个issue 已经解决,因此值得添加这个答案。

    您现在可以通过修改"editor.wordSeparators" 设置在您的设置中完成此操作。

    这是默认值:

    "editor.wordSeparators": "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?"
    

    要允许选择$foo,您可以从上面的字符串中删除$

    【讨论】:

    • 对于经常使用包含破折号的域的人,长 URL:"editor.wordSeparators": "`~!@#$%^&amp;*()=+[{]}\\|;:'\",&lt;&gt;?"
    • 这对 COBOL 开发非常有用,谢谢。
    • @TommyNguyen:你为什么要引入额外的反斜杠?
    • 还有办法进一步定制吗?我喜欢它通常会忽略破折号,但有时我想双击它应该在破折号之前/之后。最好我可以shift-doubleclick,它会使用与正常情况不同的双击行为。这可以定制吗?
    • Marcel - 与默认值相比,我没有看到任何额外的反斜杠,但那些“额外”实际上只是为了转义 " 字符,因此它不会关闭字符串,并且double \\ 代表 \ 字符,因为单个 \ 用于转义其他字符
    【解决方案2】:

    如果您想获得与 Douglas Gaskill 在他的回答中分享的相同结果,但在每种语言的基础上,这也是可能的。

    您只需指定语言,如下所示(在您的用户设置中)。由于原始海报希望 php 使用此示例,因此我将使用该示例:

     "[php]": {
                "editor.wordSeparators": "`~!@#%^&*()=+[{]}\\|;:'\",.<>/?",
            }
    

    在此特定示例中,连字符将不再被视为单词分隔符(双击任何带有连字符的字符串、术语、值等会很痛苦),只有当编辑器设置为PHP语言模式。

    另外,对于那些不熟悉这个的人......

    在某个阶段 VSCode 开始显示用于编辑设置的 GUI(我不记得在过去看到过),这将不允许您按照我指示的方式编辑 editor.wordSeparators 值。

    要按照我指示的方式进行更改,您需要从Code &gt; Preferences &gt; Settings 打开设置 not(在 Mac 上,不确定如何在其他操作系统上查看),而是从命令托盘(在 Mac 上,即 Command-shift-P)或 View &gt; Command Pallet。命令是&gt;Preferences: Open Settings (JSON)

    然后您可以添加我提供的代码或您的版本。

    要了解在其他设置的上下文中是什么样子,下面是一个示例:

    // Place your settings in this file to overwrite the default settings
    {
        "composer.executablePath": "/usr/local/bin/composer",
        "terminal.integrated.shell.osx": "/usr/local/bin/powershell",
        "editor.wordWrap": "on",
        "extensions.autoUpdate": false
        "[php]": {
                "editor.wordSeparators": "`~!@#%^&*()=+[{]}\\|;:'\",.<>/?",
            }
    }
    

    【讨论】:

      【解决方案3】:

      extensibility API 中没有任何内容可用于更改双击行为。不过,这是一个很好的要求。我建议打开一个issue on Github 关于它。目前还没有,团队可以使用反馈。

      【讨论】:

      • 考虑链接到问题,以防其他人偶然发现此问题并希望跟踪问题的进展。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 2022-12-07
      • 2019-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多