V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nnegier
V2EX  ›  程序员

请问 VSCode 有类似于 IntelliJ IDEA 的 Ctrl+W 功能以光标为中心扩选的快捷键吗?

  •  
  •   nnegier · 2023-07-27 01:31:30 +08:00 · 2883 次点击
    这是一个创建于 520 天前的主题,其中的信息可能已经有所发展或是发生改变。

    扩选。那个 Command + Option + 方向键这个不满足需求,它是端点的方式,不是以中心的方式。我查过,也试着装过 IntelliJ 的快捷键插件未果但不甘心,所以来问问

    第 1 条附言  ·  2023-07-27 17:34:38 +08:00
    #20 是正解
    27 条回复    2023-07-27 23:30:54 +08:00
    Henryy
        1
    Henryy  
       2023-07-27 03:19:51 +08:00
    是这个吗, 展开选择
    editor.action.smartSelect.expand
    shift+alt+right win 上面是这个键
    nnegier
        2
    nnegier  
    OP
       2023-07-27 03:31:34 +08:00
    @Henryy 不是,这个也是端点射线方式扩选,不是中间向两边
    DreamSpace
        3
    DreamSpace  
       2023-07-27 07:50:12 +08:00 via Android
    装个 idea keymap,然后 ctrl+w.😄
    DreamSpace
        4
    DreamSpace  
       2023-07-27 07:52:00 +08:00 via Android
    抱歉,没看到补充内容,印象中装了 keymap 后,行为和 idea 差不太多
    A3
        5
    A3  
       2023-07-27 08:01:22 +08:00 via Android
    扩选是可以一直扩吗?只选当前的单词可以用 ctrl+d
    aptupdate
        6
    aptupdate  
       2023-07-27 08:11:08 +08:00 via iPhone
    “以光标为中心扩选”这个描述太高大上了,不就是选中单词吗……
    nnegier
        7
    nnegier  
    OP
       2023-07-27 08:15:23 +08:00 via Android
    @aptupdate 因为不是以中心的扩选我有找到快捷键
    0o0O0o0O0o
        8
    0o0O0o0O0o  
       2023-07-27 08:15:44 +08:00 via iPhone
    nnegier
        9
    nnegier  
    OP
       2023-07-27 08:15:49 +08:00 via Android
    @A3 对,扩选可以一直扩,直到一行都被选中
    yougg
        10
    yougg  
       2023-07-27 08:16:19 +08:00 via Android
    一直按 Ctrl+W 可以一直扩充选择内容,单词>多词>整句>整行>整段,上面可能没有过这种使用场景,我倒是每天高频使用的快捷键。
    Trim21
        11
    Trim21  
       2023-07-27 08:20:49 +08:00
    @aptupdate #6 比如`click.argument("path", default=Path(r"..."))` 这么一行代码,当你的光标在 default 中间的的时候,用不停的按 ctrl+w ,会以次选中

    default
    default=Path(r"...")
    , default=Path(r"...")
    "path", default=Path(r"...")
    ("path", default=Path(r"..."))
    click.argument("path", default=Path(r"..."))
    Trim21
        12
    Trim21  
       2023-07-27 08:29:04 +08:00   ❤️ 5
    这个在 vscode 是原生支持的,默认快捷键是 shift+alt+right 。我用得中文语言包,这个行为叫做“展开选择”,在英文里面叫啥就不太确定了,可能是“expand selection”

    https://code.visualstudio.com/docs/editor/codebasics#_shrinkexpand-selection
    toesbieya
        13
    toesbieya  
       2023-07-27 09:02:40 +08:00
    又学到一个快捷键😆
    CodeCodeStudy
        14
    CodeCodeStudy  
       2023-07-27 09:12:47 +08:00
    我一般把 Ctrl+W 修改成关闭当前窗口
    fpure
        15
    fpure  
       2023-07-27 09:45:30 +08:00
    @Trim21 又学到一个快捷键
    Pencillll
        16
    Pencillll  
       2023-07-27 09:50:48 +08:00 via Android
    VSCode 的扩选也可以一直扩啊,就是楼上说的 Expand Selection ,我一直在用,键位也改成 ctrl+w 了
    Rache1
        17
    Rache1  
       2023-07-27 09:54:31 +08:00
    我来补个图吧

    Rache1
        18
    Rache1  
       2023-07-27 09:59:59 +08:00
    weijancc
        19
    weijancc  
       2023-07-27 10:08:27 +08:00
    我是用这个"editor.action.addSelectionToNextFindMatch", 默认快捷键是 ctrl+d
    dnL
        20
    dnL  
       2023-07-27 10:22:40 +08:00
    {
    "key": "ctrl+w",
    "command": "editor.action.smartSelect.grow",
    "when": "editorTextFocus"
    }
    Belmode
        21
    Belmode  
       2023-07-27 10:35:00 +08:00
    @Trim21 12 楼正解! Shift+Alt+Right ,感谢!
    XueXianqi
        22
    XueXianqi  
       2023-07-27 10:42:28 +08:00
    @Trim21
    按照我的使用经验和理解,感觉 OP 应该不是这个意思

    选中一个变量,不管光标是在变量的最左侧/最右侧 亦或是中间的任何位置
    在单个单词组成的变量的情况下,效果是一样的
    在多个单词组成的变量的情况下,是有区别的


    JetBrains 的 IDE 里面的 Ctrl+W 的实现效果是这样的(我测试使用的是 PyCharm ):
    - user (光标在任意位置):user
    - ForeignKeyConstraint (光标在最左侧):ForeignKeyConstraint
    - ForeignKeyConstraint (光标在中间的 `K` 之后):ForeignKeyConstraint
    - ForeignKeyConstraint (光标在最右侧):ForeignKeyConstraint
    - blog_user.User (光标在最左侧):blog_user -> blog_user.User
    - blog_user.User (光标在中间的 `u` 之前):blog_user -> blog_user.User
    - blog_user.User (光标在最右侧):User -> blog_user.User


    而在 VSCode 中,Shift+Alt+Right 的实现效果是这样的:
    - user (光标在任意位置):user
    - ForeignKeyConstraint (光标在最左侧):Foreign -> ForeignKeyConstraint
    - ForeignKeyConstraint (光标在中间的 `K` 之后):Key -> ForeignKeyConstraint
    - ForeignKeyConstraint (光标在最右侧):Constraint -> ForeignKeyConstraint
    - blog_user.User (光标在最左侧):blog -> blog_user -> blog_user.User
    - blog_user.User (光标在中间的 `u` 之前):user -> blog_user -> blog_user.User
    - blog_user.User (光标在最右侧):User -> blog_user.User
    Trim21
        23
    Trim21  
       2023-07-27 11:02:50 +08:00
    @XueXianqi #22 这个分词似乎是交给 chrome 来做的,没有特别精细的设置可以调
    FengMubai
        24
    FengMubai  
       2023-07-27 13:54:25 +08:00 via Android
    vim 插件:`viw`
    Leviathann
        25
    Leviathann  
       2023-07-27 14:28:56 +08:00
    @FengMubai 不一个概念
    这个选择可以多次输入指令,根据语法树不断扩大范围
    vim 结合 treesitter 可能可以做到
    ensonmj
        26
    ensonmj  
       2023-07-27 18:06:28 +08:00 via iPhone
    vim 以前配置 textobject ,可以做到
    tonytonychopper
        27
    tonytonychopper  
       2023-07-27 23:30:54 +08:00 via iPhone
    学到了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2806 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:44 · PVG 11:44 · LAX 19:44 · JFK 22:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.