Visual Studio Code中的多行编辑


578

是否可以像Sublime Text一样启用多行编辑?

例如,按Ctrl可以放置其他光标插入符,并且可以一次在文档中的多个位置上写入/删除。


4
在许多Mac应用程序中(例如TextEdit),我也可以按住Option键并拖动鼠标以选择一个框。这在VS Code中可用吗?
西蒙·伍德赛德

相关帖子在这里
RBT

2
从2018年4月(版本1.23)开始,我们可以使用鼠标中键选择多个列。code.visualstudio.com/updates/...
blueray

5
对于在键盘快捷方式部分中寻找此命令名称的任何人,它都是:editor.action.insertCursorAtEndOfEachLineSelected
enzoborgfrantz

1
@enzoborgfrantz +1正是我想要的东西!所选答案应该首先提到相关的编辑器命令,因为按键绑定可能会有所不同。
pius

Answers:


1059

在Windows上,按住Ctrl+的Alt同时按向上或向下箭头键可添加光标。

苹果:⌥ Opt+ ⌘ Cmd+ /

Linux的:Shift+ Alt+ /

请注意,第三方软件可能会干扰这些快捷方式,从而使它们无法按预期运行(尤其是Windows上的Intel HD Graphics软件;有关更多详细信息,请参见注释)。

如果遇到此问题,可以禁用英特尔/其他软件热键,也可以修改VS Code快捷方式(如下所述)。

Esc重置为单个光标。

Multiline cursors in Visual Studio Code

或者,正如Isidor Nikolic指出的那样,您可以按住Alt鼠标左键以任意放置光标。

Arbitrarily placed multiline cursors in Visual Studio Code

您可以通过以下方式查看和编辑键盘快捷键:

文件→首选项→键盘快捷键

说明文件:

https://code.visualstudio.com/docs/customization/keybindings

官方VS Code键盘快捷键备忘单:

https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf
https://code.visualstudio.com/shortcuts/keyboard-shortcuts-macos.pdf
https://code.visualstudio.com/shortcuts/ keyboard-shortcuts-linux.pdf


155
在Windows上,第一个选项只是翻转屏幕。:-/
Kristoffer la Cour 2016年

26
这不再有效。尝试CTRL + SHIFT + UP/DOWN/CLICKORALT + SHIFT + UP/DOWN/CLICK

39
@Nacimota-在Windows 10机器上(现在经过测试),按CTRL + ALT + ARROW组合可以翻转屏幕,按CTRL + ALT + SHIFT + ARROW可以创建一个新的光标。键盘快捷键PDF的已发布列表可能已过期。
Alex C

11
@AlexC快捷方式并不过时;下载最新版本并亲自查看配置。如果您发现列出的快捷方式在翻转屏幕,我敢打赌,这是因为您有一个Intel GPU,并且正在运行Intel软件,默认情况下会拦截这些快捷方式。打开HD Graphics软件并禁用或重新绑定热键(如果它困扰您),但是请勿编辑我的帖子以添加不正确的信息。列出的快捷方式是准确的,我将不会列出可能会干扰也可能不会干扰它们的每一个第三方软件。
纳西莫塔

6
@Nacimota,在所有应有的尊重下,这是一个诚实的错误,对于很大一部分用户而言,这都是现实。那里有足够的intel机器,这可能是默认配置,因此附加信息非常有用。我们俩的目标都是提供最佳的最新答案。额外增加一句话来列举这种差异将是有帮助的。
Alex C

136

仅需两步即可解决!

  1. Ctrl + F

  2. Alt + Enter

等于Sublime Text的Alt+ F3

Enter image description here


21
相同的效果使您可以按ctrl + F2
ksopyla

2
我们可以一次选择所有包含该关键字的行吗?崇高的文字是Ctrl + F> Alt + F3> Ctrl + L
Anirban

在Mac中这是什么意思?Ctrl和Alt替换为...?
OldPeculier

67

您只需Alt+单击可查看其他光标。如前所述,Ctrl+ Alt+


9
您可以使用Alt + Shift +单击来选择两行以及之间的每一行。
史蒂文·里肯斯

6
问题是,如何编辑其“密钥绑定”(什么Alt + Click叫名字?)
David Refoua

Alt +单击会自动定义单词,或者移动到单词的左侧,对我不起作用。
jbodily

找到答案我的问题,它可以是Alt键(这是默认,或按Ctrl /⌘。此选项可与修改后的"editor.multiCursorModifier": "ctrlCmd"关键settings.json
大卫Refoua


27

使用Ctrl+ D在Windows和Linux中对相同单词进行多单词编辑。

在Mac上使用CMD+ D


正如@Krishnaraj所说,Ctrl + D起作用。实际上,VSCode和Sublime都支持此功能。确保在以后所有出现的事件中都应用Ctrl + D,而不释放ctrl。是的,您仍然需要手动选择,它只是帮助您释放鼠标。MacOS Command + D
Oscar Zhang


17

在Mac上是:

Option+ Command同时按下向上或向下箭头键。


16

我想选择多行,然后点击“某物”以使每个选择行都有一个光标(类似于Ctrl+ Shift+L Sublime Text中的)。Visual Studio Code中的此操作称为“将光标添加到行尾”。

这已经在Visual Studio Code 1.22中进行了测试,并且可以在WindowsMac上使用

方法如下:

  1. 选择要具有多个光标的行。
  2. 只需按Alt+ Shift-即可I

现在,每行选定一个光标。


1
@Manza在VS Code中,您是ALT-SHIFT-Ii不是L)。字体不利于正确显示。我每天在Mac和Windows上都多次使用此命令,并且再次使用最新版本的VS Code:1.24.1再次进行了测试,并且向您保证它可以工作。也许您有一个引起冲突的插件?
马克西姆

哇,是的,真是太好了,非常感谢,我仍然在此功能之间令人叹为观止,这真是太方便了
Manza

对我来说,它是CTRL-SHIFT-L(窗口)
标本


14

我正在使用vscodevim扩展,所以不确定这是否是常见问题。但是,我遇到的问题是Ctrl+ Alt+ UpArrow颠倒了我的屏幕。

查看Visual Studio Code Basics(我不知道他们是否在最近的更新中对此进行了更改),它说要使用:

Ctrl+ Alt+ Shift+(Up/ down


1
Ctrl + Alt + [箭头键]是用于屏幕旋转的常见键盘快捷键,当然可以使用Intel图形驱动程序和/或相关软件。我想它可能在VSCode进入之前就被它拦截了。最近(而且很烦人,因为我以前使用过它)旋转似乎在英特尔软件的更新中已停止,并且现在只能通过长菜单进行设置在Windows中。因此,键盘快捷键应在VSCode中与更新的驱动程序一起使用。
Bob Sammers



8

在最新版的Visual Studio Code中,您现在可以按住OptionAlt在Windows上)在多行中选择同一列,。

要启用此功能,请确保将其更改editor.multiCursorModifier为如下所示:

"editor.multiCursorModifier": "ctrlCmd"

从Visual Studio Code发行说明1.32.0:

在下面的视频中,选择作为常规选择开始,然后按住Alt直到释放鼠标按钮:

改进的列选择示例:



4

我认为这取决于您的Visual Studio Code版本。

我的是Linux版本Visual Studio Code 1.7.2。

                                     "when": "editorTextFocus" },
{ "key": "shift+alt+up",          "command": "editor.action.insertCursorAbove",
                                     "when": "editorTextFocus" },
{ "key": "ctrl+shift+down",       "command": "editor.action.insertCursorBelow",
                                     "when": "editorTextFocus" },
{ "key": "shift+alt+down",        "command": "editor.action.insertCursorBelow",
                                     "when": "editorTextFocus" }```

The point is the shortcuts are not same in all machines, so you should check your configuration. Go to menu:

> Menu *File* → *Preferences* → *Keyboard Shortcuts*

Search for `editor.action.insertCursorAbove` and `editor.action.insertCursorBelow` and see your current configurations. You may change them if they conflict with operating system's shortcut keys.




在我的用户设置中添加SHIFT + ALT + UP / DOWN可以在Windows 10上使用
SteveC

4

在Visual Studio Code中,只需Alt将光标放在编辑位置(要编辑的位置)上,然后右键单击以选择。


2
这个答案似乎不完整
Spangen

4

对我来说,有效的解决方案是首先选择所需的文本进行编辑,然后使用CTRL+ F2选择页面中所有匹配的数据。您也可以按照@lesterCovax的建议使用CTRL+ Shift+L

请注意:上面的解决方案利用VSCode编辑器的固有功能在整个页面上选择相似的文本,因此要小心。

对我来说,以上Ctrl+ ALT+ 解决方案Arrowkeys不起作用,因为它导致屏幕更改了显示方向,从而无法在VSCode中选择行。

在此处输入图片说明


2

如果您使用的是Linux,则与Alt+ click可能会发生冲突,这是“移动窗口”的默认设置。

您可以转到菜单设置窗口行为窗口行为操作选项卡

只需删除Alt+ left(按住),它将起作用。

这是最好的方法,因为您无需按住两个+键即可完成如此简单的任务。


2

我正在使用Sublime Text键映射,并且最佳答案提供的键绑定似乎不起作用:(可能是Visual Studio Code和Sublime键映射之间的某些冲突。

@Han推荐的键绑定对我有用(非常感谢!):

  • 使用Ctrl+ Shift+ Up/ 进入多行光标模式Down
  • 退出 Esc

(旁注)以下是Emmet与多行光标一起使用的一个小示例(通过上面列出的这些键绑定启用和禁用):

在此处输入图片说明


2

除了所有答案,还有另一种方法。选择所需的行,然后按:

  • Windows:Shift+Alt+i
  • Mac:shift+ option+i

这会将光标置于所选内容的每一行中。


2

版本1.43(2020年2月)

现在,您可以通过以下方式切换列选择模式,该模式可以更改鼠标手势和箭头键:

  • 菜单栏>选择>列选择模式
  • Ctrl+ Shift+ P(显示所有命令)>切换列选择模式
  • 绑定您的密钥以进行命令 "editor.action.toggleColumnSelection"

在此处输入图片说明

注意:激活后,状态栏中有一个“列选择”面板,您可以按再次禁用它。


1

我的设置:Windows 8.1 64位,Visual Studio Code版本1.33.1。

问题:与Intel HD Graphics 4000的键盘快捷键冲突

当我使用Visual Studio Code的默认快捷方式(Ctrl+ Alt+ UPCtrl+ Alt+ DOWN)时遇到问题。以我为例,这些命令分别将屏幕旋转0º和180º。这是因为我的计算机上安装了图形Intel应用程序。然后,我只是禁用此应用程序的快捷方式。

是一个可以帮助某人的教程。


1
在Windows 7中,您可以右键单击桌面,选择图形选项->热键->禁用。
莫里兹·罗斯勒


0

当我需要快速编辑文件中的约20k 行时@ maxime提供的解决方案SHIFT + ALT + i为我工作。提到的大多数其他键盘快捷键仅对有限数量的行有用。 SHIFT选择要进行列编辑的区域,然后按SHIFT + ALT + i是处理此问题的最有效方法。

不过,我意外发现的(并且在这里尚未提及)是在“光标编辑模式”下有1 万行的限制(有一个开放的Github功能请求来增加它)。这意味着对于非常大的文件,最好是编写编辑脚本而不是手动进行编辑。

对于必须使用快捷方式(默认绑定为)的@specimen这样的用户,应检查是否未安装键盘映射扩展名。您可以通过在扩展窗格中搜索进行检查,然后转到()。CTRL + SHIFT + LSelect all occurrences of current selection@recommended:keymapsFile > Preferences > KeymapsCTRL+K CTRL+M

默认的[Windows]键映射可以在PDF格式的HERE中找到,或者您可以转到File > Preferences > Keyboard Shortcuts查找/修改当前绑定。也有更深入的键绑定文档这里


0

在带有KDE的Linux Fedora(我尝试过Fedora 31)上,请转到:

  1. 系统设置
  2. 窗口管理
  3. 窗口行为
  4. 窗口动作
  5. 内部窗口,标题栏和框架动作
  6. 单击左单击框
  7. 选择不执行任何操作(替换移动/拖动)

现在,您可以使用Alt +左​​键单击选择多行!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.