IntelliJ IDEA编辑多行的方式


113

我已经在TextMate中看到了这一点,并且想知道在IDEA中是否有办法做到这一点。

说我有以下代码:

 leaseLabel = "Lease";
 leaseLabelPlural = "Leases";
 portfolioLabel = "Portfolio";
 portfolioLabelPlural = "Portfolios";
 buildingLabel = "Building";

将'+“ foo”'附加到每一行的最佳方法是什么?列模式将不起作用,因为行未在右侧正确对齐...除非有一种简单的方法可以使文本右对齐:P


这是我很少需要执行的操作,即使我的编辑器中有特殊模式,我也永远不会记住如何使用它。如果只是几行(如上图),我只会使用剪贴板。如果是数百行,那是我要转到查找/替换小工具的时候。
迈克尔·伯

在列模式下,在最左侧创建5个光标。然后使用Ctrl-RightArrow移至右侧。多个游标,宏和搜索替换都是完成此操作的绝妙方法!我无法决定我最喜欢哪一个。
Daniel Alexiuc

其Option + Shift +单击Macbook。所有的IntelliJ快捷键:docs.google.com/document/d/...
Soham梅塔

Answers:


174

从Idea IntelliJ IDEA 13.1开始,可以编辑多行。

用:

Alt+ Shift+鼠标点击

供选择。有关IntelliJ博客文章中此新改进的更多信息,请参见此处。非常有用的功能。


1
感谢您的链接。我不小心碰到了此功能,但不知为何我不小心按下了哪个键:)
aberrant80

12
从2015年2月开始,按Alt-Shift-Insert:列选择模式或仅按Alt-Select。非常强大且易于使用。我不确定为什么当他明确询问同时行编辑时,为什么人们总是告诉OP使用“搜索并替换”-他问的事实表明他足够聪明,可以知道搜索和替换。
RichieHH 2015年

4
对于Mac,按Alt +单击。
Gowtham Gopalakrishnan

5
而现在,只需鼠标中键+拖动即可。
WesternGun

1
其Option + Shift +单击Macbook。所有的IntelliJ快捷键:docs.google.com/document/d/...
Soham梅塔

114

我使用列选择模式(在Mac上为Cmd+ Shift+ 8),该模式允许通过Shift+ UpShift+ 创建多个光标,Down然后一起编辑所有行。

从IntelliJ IDEA 14开始,上方/下方也有Clone Caret

  • Windows :CtrlCtrl+ Up/Down
  • MacOS :OptionOption+ Up/Down

(按住修改键的第二次,然后按箭头键)


5
我不小心按下了Cmd + Shift + 8,并且一辈子都想不出为什么可以选择“多行”。感谢您提供的命令快捷键!
罗宾·琼森

4
在IntelliJ Ultimate 2016.1。上,双<kbd> Ctrl </ kbd>不适用于我。我必须使用双<kbc> Option </ kbd>,按住第二下,然后按箭头键。
Big McLargeHuge

1
@DaveKennedy绝对正确,Jet Brains更改了默认快捷方式。
亚历山大·博古舒夫

双ctrl解决方案是最好的,因为它可以让我将手放在键盘上
Andrejs

要更改键映射以实际匹配您使用的任何其他编辑器,请转到“设置”->“键映射”,然后在右侧的搜索框中搜索“ Clone Caret”。右键单击该动作,然后选择“添加键盘快捷键”。如果保存,将导致冲突,请始终单击“确定”。然后,它将添加另一个提示,询问您是否要“删除”另一个任务(可能是您想要的),还是“离开”它(故意用一个快捷方式触发两件事似乎很奇怪...)或“取消”(为什么您之前是否单击过确定?)
ArtOfWarfare

38

另一种仅使用键盘的方法。可能(从13.1版本开始)可以使用Alt+ J/ Shift+ Alt+ J(对于OS X为Ctrl+ G)快捷方式来创建多个插入符号。Alt+ J选择下一次出现的当前选定文本,并添加另一个插入符号。

  1. 选择第一个分号

在此处输入图片说明

  1. 然后按Alt+ J四次

在此处输入图片说明

  1. 编辑您想要的

在此处输入图片说明

  1. Esc返回第一行。

在此处输入图片说明


5
天哪,我在没有此功能的情况下生活了一年!非常感谢!
coffman21 '19

27

将插入符号放在末尾

Windows: CTRL + CTRL(按住)+↑ / ↓

Mac: option + option(按住)+ ↑ / ↓

要将插入号放置在行的末尾:将插入号移动到第一行,克隆到底部,然后单击END

更改多字符热键

要添加自定义键盘映射,CTRL+ SHIFT+ A,类型keymap与点击一个Settings作为潜台词。搜索Clone Caret AboveClone Caret Below

我映射矿ALT+ SHIFT+ ↑ / ↓在Windows和+ ↑ / ↓Mac上。

奖金

尝试的保持组合CTRLSHIFT和箭头用于改善选择电源。


1
感谢“ END”注释,非常适合对不同长度的变量进行通用赋值。
Keegan

1
这应该是答案,因为它是最完整,最关键的响应。+1。
Ariel Mirra

另一种方法是按住“ alt”并按住“ j”,它将继续向多行选择中添加行。
gaurav

13

列模式工作正常:首先在列模式下选择所有行,然后按END:每个光标将跳到相应行的末尾。

在Linux上(无需鼠标):

  1. ALT+ SHIFT+ INSERT进入块模式

    进入列编辑模式

  2. SHIFT + UPSHIFT + DOWN选择多行

    在此处输入图片说明

  3. END 跳到每一行的结尾

    在此处输入图片说明

  4. 现在输入foo,它将添加到每一行:

    在此处输入图片说明

  5. 现在,使用取消选择所有内容,ESCAPE然后使用切换回普通选择模式ALT + SHIFT + INSERT


9

您也可以通过单击鼠标滚轮拖动进行垂直代码块选择:

在此处输入图片说明


8

选择下一次发生:

      Alt+J on Windows, Ctrl-G on Mac OS X

取消选择出现次数:

      Alt+Shift+J on Windows, Ctrl-Shift-G on Mac OS X

选择所有出现的事件:

      Ctrl+Alt+Shift+J on Windows, Ctrl-Cmd-G on Mac OS X

有关更多参考:链接


重点(left) Alt + J是您必须先选择代码。
ALIZEYN '18 -10-20

7

我只是将宏用于此类操作。我开始记录宏,执行一次,然后在要修改的每一行上播放宏。您会惊讶于宏记录/播放功能的出色表现。


丢弃宏对于进行此类更改非常方便。如果我在Zeus编辑器中进行这些更改,那将是我的正确选择。
jussij

如果所有行都这样分组,则记录宏并将光标移动到下一行,那么您只需要在第一行开始运行宏,然后重复多次即可。
weiji

您如何表示可以“多次重复”?有没有一种方法可以自动重复宏?
pypmannetjies

编辑->宏->播放最后一个宏。我已经将其映射到F12,但是我有一个非标准的键绑定。我做了一次宏,然后一遍又一遍地重击F12。
克里斯·凯塞尔

宏是好的,但如果我在的IntelliJ使用ideavim,宏不能解决VIM的快捷方式
阿弥陀佛

5

我花了一段时间才找到答案,但是在Mac上,您可以连按两次Option(按一次,放开,再按一次,再按一次),然后按Up/ Down键创建/删除插入符号。

您也可以按住Shift+ Option并单击以在特定点创建/删除插入符号。


很好,但是有没有办法做到这一点,并一直选择到文件末尾?否则,我必须使用箭头浏览整个内容,并且我们有一些庞大的文件。
杰基


3

在这种情况下,您也可以只选择要执行此操作的代码段并对其进行替换。替换:



有:

” + “富”;

因此,如果您不知道:如果在执行替换时选择了文本(Ctrl + R或Cmd + R),则该文本仅适用于所选文本。



2

它是Option + Shift + Click专为MacBook。

所有重要的Intellij快捷方式:https ://docs.google.com/document/d/1KagEr4hDmTugMJJLsYUgc122zXEnbj4A2vHoe8PtKpo/edit ? usp = sharing



1

对于较新的版本,请使用:Alt+ Shift+Insert


1
完美地工作!感谢@Meysam
gaurav

另一种方法是按住“ alt”并按住“ j”,它将继续向多行选择中添加行。
gaurav

0

我通常使用的是(NetBeans,但我相信在任何IDE中都易于使用)find&replace

您只需找到;\n并替换为它,+ $foo;\n然后就不能将其应用于所有行,而是将光标放在第一行上,然后只需按7次“替换”按钮(取决于我的IDE)即可立即更改7行。简单易用,应该使用您可以找到的最基本,最先进的IDE来完成。

编辑:在IntelliJ中(不知道它是否也可以在其他IDE中使用),您只能使用regexp search&replace进行选择,因此您实际上可以使用“全部替换”


在某些情况下,行可能完全不一样,有些情况下您可能无法应用此方法,但是我认为即使使用高级方法,您也无法对此情况做很多事情。
2013年

那为什么是-1?我回答了他问的问题。-1问题,如果您认为它是愚蠢的,则不是正确的答案。老实说,我接受宏的答案是较慢的方法。
Srneczek


0

以上所有答案都是不错的选择,但是如果您要在行尾进行多行编辑,则在多行选择处于活动状态时按“结束”键。

对于Mac,命令序列为:

shift option click #选择一组线

command right arrow #转到行尾

这将在行尾进行多行选择,您可以根据需要进行编辑

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.