• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nnegier
V2EX  ›  程序员

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

  •  
  •   nnegier · Jul 27, 2023 · 4681 views
    This topic created in 1201 days ago, the information mentioned may be changed or developed.

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

    Supplement 1  ·  Jul 27, 2023
    #20 是正解
    27 replies  •  2023-07-27 23:30:54 +08:00
    Henryy
    Henryy
    Jul 27, 2023
    1
    是这个吗, 展开选择
    editor.action.smartSelect.expand
    shift+alt+right win 上面是这个键
    nnegier
    nnegier
    OP
    Jul 27, 2023
    2
    @Henryy 不是,这个也是端点射线方式扩选,不是中间向两边
    DreamSpace
    DreamSpace
    Jul 27, 2023 via Android
    3
    装个 idea keymap,然后 ctrl+w.😄
    DreamSpace
    DreamSpace
    Jul 27, 2023 via Android
    4
    抱歉,没看到补充内容,印象中装了 keymap 后,行为和 idea 差不太多
    A3
    A3
    Jul 27, 2023 via Android
    5
    扩选是可以一直扩吗?只选当前的单词可以用 ctrl+d
    aptupdate
    aptupdate
    Jul 27, 2023 via iPhone
    6
    “以光标为中心扩选”这个描述太高大上了,不就是选中单词吗……
    nnegier
    nnegier
    OP
    Jul 27, 2023 via Android
    7
    @aptupdate 因为不是以中心的扩选我有找到快捷键
    nnegier
    nnegier
    OP
    Jul 27, 2023 via Android
    9
    @A3 对,扩选可以一直扩,直到一行都被选中
    yougg
    yougg
    Jul 27, 2023 via Android
    10
    一直按 Ctrl+W 可以一直扩充选择内容,单词>多词>整句>整行>整段,上面可能没有过这种使用场景,我倒是每天高频使用的快捷键。
    Trim21
    Trim21
    Jul 27, 2023
    11
    @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
    Trim21
    Jul 27, 2023❤️5
    12
    这个在 vscode 是原生支持的,默认快捷键是 shift+alt+right 。我用得中文语言包,这个行为叫做“展开选择”,在英文里面叫啥就不太确定了,可能是“expand selection”

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

    Rache1
    Rache1
    Jul 27, 2023
    18
    weijancc
    weijancc
    Jul 27, 2023
    19
    我是用这个"editor.action.addSelectionToNextFindMatch", 默认快捷键是 ctrl+d
    dnL
    dnL
    Jul 27, 2023
    20
    {
    "key": "ctrl+w",
    "command": "editor.action.smartSelect.grow",
    "when": "editorTextFocus"
    }
    Belmode
    Belmode
    Jul 27, 2023
    21
    @Trim21 12 楼正解! Shift+Alt+Right ,感谢!
    XueXianqi
    XueXianqi
    Jul 27, 2023
    22
    @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
    Trim21
    Jul 27, 2023
    23
    @XueXianqi #22 这个分词似乎是交给 chrome 来做的,没有特别精细的设置可以调
    FengMubai
    FengMubai
    Jul 27, 2023 via Android
    24
    vim 插件:`viw`
    Leviathann
    Leviathann
    Jul 27, 2023
    25
    @FengMubai 不一个概念
    这个选择可以多次输入指令,根据语法树不断扩大范围
    vim 结合 treesitter 可能可以做到
    ensonmj
    ensonmj
    Jul 27, 2023 via iPhone
    26
    vim 以前配置 textobject ,可以做到
    tonytonychopper
    tonytonychopper
    Jul 27, 2023 via iPhone
    27
    学到了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2136 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 04:21 · PVG 12:21 · LAX 20:21 · JFK 23:21
    ♥ Do have faith in what you're doing.