【问题标题】:IntelliJ IDEA way of editing multiple linesIntelliJ IDEA 多行编辑方式
【发布时间】:2010-11-18 18:19:27
【问题描述】:

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

假设我有以下代码:

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

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

【问题讨论】:

  • 这是我很少需要做的事情,即使我的编辑器中有特殊模式,我也永远不会记得如何使用它。如果它只是几行(如上),我只会使用剪贴板。如果它是数百行,那我会转到查找/替换小工具。
  • 在列模式下,在最左边创建5个游标。然后使用 Ctrl-RightArrow 向右移动。多个光标、宏和搜索替换都是完成这项工作的绝佳方法!我无法决定我最喜欢哪一个。
  • 它的 Option + Shift + Click for Macbook。所有 Intellij 快捷方式:docs.google.com/document/d/…
  • 也许这个答案也有帮助:stackoverflow.com/a/33911171/2008111

标签: java android-studio intellij-idea ide text-editor


【解决方案1】:

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

窗口

Alt + Shift + 鼠标点击

macOS

Option + Shift + 鼠标点击

供选择。有关 IntelliJ 博客文章 here 的更多信息。非常有用的功能。

【讨论】:

  • 感谢您的链接。我不小心碰到了这个功能,但不知何故我不知道我不小心按下了哪个组合键:)
  • 截至 2015 年 2 月 Alt-Shift-Insert:列选择模式或简单的 Alt-Select。非常强大且易于使用。我不确定为什么人们在他明确询问同时行编辑时总是告诉 OP 使用“搜索和替换” - 他问的事实表明他足够聪明,可以了解搜索和替换。
  • 对于 Mac,它的 Alt + Click。
  • 现在,只需鼠标中键+拖动即可。
  • 它的 Option + Shift + Click for Macbook。所有 Intellij 快捷方式:docs.google.com/document/d/…
【解决方案2】:

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

从 IntelliJ IDEA 14 开始,还有 Clone Caret Above/Below

  • Windows:CtrlCtrl+向上/向下
  • MacOS:选项选项 + 向上/向下

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

【讨论】:

  • 我不小心按下了 Cmd+Shift+8 并且我一生都无法弄清楚为什么一切都是“多行”可选的。感谢您的命令快捷方式!
  • Double Ctrl 在 IntelliJ Ultimate 2016.1 上对我不起作用。我必须使用双 Option,按住第二次,然后按箭头键。
  • @DaveKennedy 你说得对,Jet Brains 已更改默认快捷方式。
  • 双 ctrl 解决方案是最好的,因为它可以让我的手保持在键盘上
  • 要更改键映射以实际匹配您使用的任何其他编辑器,请进入设置 -> 键映射,然后在右侧搜索框中搜索“克隆插入符号”。右键单击该操作并选择“添加键盘快捷键”。如果保存它会导致冲突,请单击“确定”。然后它会添加另一个提示,询问您是要“删除”另一个任务(可能是您想要的),还是“离开”它(故意用一个快捷方式触发两件事似乎很奇怪......)或“取消”(为什么你之前有没有点击确定?)
【解决方案3】:

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

  1. 选择第一个分号

  1. 然后按Alt+J四次

  1. 编辑您想要的内容

  1. Esc 返回第一行。

【讨论】:

  • 天哪,我在没有这个功能的情况下活了一年!非常感谢!
【解决方案4】:

将插入符号放在末尾​​h3>

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

Mac: 选项 + 选项(按住)+ ↑ / ↓

要将插入符号放在行尾:将插入符号移到顶行,克隆到底部,然后单击END

更改多插入符号热键

要添加自定义键盘映射,CTRL+SHIFT+A,键入keymap 并单击带有Settings 的那个潜台词。搜索Clone Caret AboveClone Caret Below

我将我的映射到 Windows 上的 ALT+SHIFT+↑ / ↓+ ↑ / ↓ 在 Mac 上。

奖金

尝试按住 CTRLSHIFT 和箭头的组合以提高选择能力。

【讨论】:

  • 感谢 'END' 评论,非常适合对不同长度的变量进行常见分配。
  • 这应该是答案,因为它是最完整和最中肯的回应。 +1。
  • 另一种方法是按住“alt”并按住“j”,它将不断向多行选择添加行。
【解决方案5】:

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

在 Linux 上(无需鼠标):

  1. ALT + SHIFT + INSERT 进入阻塞模式

  2. SHIFT + UPSHIFT + DOWN 选择多行

  3. END跳转到每一行的末尾

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

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

【讨论】:

  • 很高兴...谢谢@AndreyTyukin
  • 这就是我在 Linux 上的工作方式(Ubuntu 2021.04)。但是很遗憾,因为之前是用 Ctrl+Ctrl 工作的,肯定有什么变化,Wayland 可能会干扰那个动作。
  • 终于,确定的答案!
【解决方案6】:

WebStorm 2020.2 起,您可以使用 AltShiftG 在每个选定行的末尾添加插入符号.

使用多个插入符号 (Alt+Shift+G) 的新操作可让您快速将插入符号放置在每个选定行的末尾,并在添加所有插入符号后立即删除选择。

What’s new in WebStorm 2020.2

【讨论】:

  • 我找这个已经很久了。谢谢!是否也有一个热键来做相反的事情?
【解决方案7】:

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

【讨论】:

    【解决方案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
    

    更多参考:link

    【讨论】:

    • (left) Alt + J 的要点是你必须先选择代码。
    【解决方案9】:

    我只是将宏用于这类事情。我开始录制宏,做一次,然后在我想修改的每一行播放宏。您会惊讶于宏录制/播放功能的精彩程度。

    【讨论】:

    • 丢弃宏对于进行此类更改非常方便。如果我在 Zeus 编辑器中进行这些更改,您会怎么想这正是我会做的。
    • 如果所有行都像这样分组在一起,然后记录宏以将光标也移动到下一行,然后您只需在第一行开始运行宏并重复多次你想要的。
    • 你是什么意思你可以“重复你想重复多少次”?有没有办法自动重复一个宏?
    • 编辑->宏->播放最后一个宏。我已经将它映射到 F12,但我有一个非标准的键绑定。我做了一次宏,然后开始一遍又一遍地敲击 F12。
    • 宏很好,但如果我在intellij上使用ideavim,宏无法解析vim的快捷方式
    【解决方案10】:

    我花了一段时间才发现,但在 Mac 上,您可以双击 Option(按一次,松开,再按一次,按住不放)并使用 Up /Down 键可根据需要创建/删除插入符号。

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

    【讨论】:

    • 这很好,但有没有办法做到这一点并一直选择到文件末尾?否则我必须使用箭头滚动浏览整个内容,我们有一些海量文件。
    【解决方案11】:

    在 Linux 上 ALT + CTRL + SHIFT + CLICK

    【讨论】:

      【解决方案12】:

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

      ";

      与:

      " + "富";

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

      【讨论】:

        【解决方案13】:

        Macbook 是 Option + Shift + Click

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

        【讨论】:

          【解决方案14】:

          我按住 (Shift + option + command) 然后单击我想要额外光标移动的位置。在 Mac 上使用 Webstorm

          【讨论】:

            【解决方案15】:

            按住ALT并使用鼠标单击并拖动

            【讨论】:

              【解决方案16】:

              对于 Mac:

              Option + Shift + Click & Drag
              

              【讨论】:

                【解决方案17】:

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

                【讨论】:

                • 另一种方法是按住“alt”并按住“j”,它将不断向多行选择添加行。
                【解决方案18】:

                您可以在搜索和替换工具中设置多个插入符号。

                1. Ctrl + R 打开搜索和替换工具
                2. 写下标识每次重复开始的字符或单词以进行编辑
                3. 点击搜索和替换工具中的“选择所有出现”,IntelliJ 将为每个出现添加一个插入符号

                活出魔法

                【讨论】:

                  【解决方案19】:

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

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

                  编辑: 在 IntelliJ 中(不知道它是否也适用于其他 IDE)你可以使用你的正则表达式搜索和替换来选择,这样你就可以实际使用“全部替换”

                  【讨论】:

                  • Ofc 在某些情况下,当线条完全不同或其他情况时,您无法应用此方法,但我认为即使使用高级方法,您也无能为力。
                  • 那么为什么是-1?我回答了他问的问题。 -1 如果您认为它是愚蠢的问题,而不是正确的答案。老实说,我认为接受宏的答案是较慢的方法。
                  【解决方案20】:

                  对于 mac 用户,它是:ALT + SHIFT + Click

                  【讨论】:

                    【解决方案21】:

                    以上所有答案都很好,但是如果您想在行尾进行多行编辑,那么您可以在多行选择处于活动状态时按“结束”键。

                    对于 Mac,命令顺序为:

                    shiftoptionclick#选择一组行

                    command right arrow # 转到行尾

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

                    【讨论】:

                      猜你喜欢
                      • 2012-02-08
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2015-01-18
                      • 2012-12-03
                      • 1970-01-01
                      • 2015-03-25
                      • 2012-01-18
                      相关资源
                      最近更新 更多