在文本编辑器中删除代码行

时间:2008-09-13 16:53:42

标签: visual-studio eclipse vim emacs text-editor

编辑: 此问题已被标记为“托尔斯泰”,感谢我写作的质量和篇幅:)只需阅读第一段和最后一段应该足够了:)如果您倾向于使用鼠标选择并移动代码,那么中间的内容可能会让您感兴趣。

这个问题是关于如何使用文本编辑器的。我正在寻找删除多行代码的最佳方式(无意申请专利:)这扩展到转置行,即删除并添加它们到某处其他。最重要的是,我不想创建任何空白行,我必须单独删除。类似于Visual Studio的SHIFT + DELETE功能,但同时适用于多行。

假设您要从以下代码中删除第3行(标签和新行也可视化)。天真的方法是选择尖括号之间的文字:

if (true) {\n
\t int i = 1;\n
\t <i *= 2;>\n
\t i += 3;\n
}\n

然后点击退格键。这会创建一个空行。再次按退格键两次以删除\ t和\ n。

你最终得到:

if (true) {\n
\t int i = 1;\n
\t i += 3;\n
}\n

当您尝试选择整行时,Visual Studio不允许您选择尾随换行符。例如,将光标放在一行上并按SHIFT + END将不会在结尾处选择换行符。如果您使用鼠标,也不会选择换行符,即单击一行中间并将光标一直拖到右侧。如果进行跨越至少两行的选择,则只选择尾随换行符。我使用的大多数编辑都是这样做的; Microsoft WordPad和Word是反例(我在那里删除文本时经常会出现新行错误;至少Word有办法显式显示行尾和段落结尾字符。)

一般情况下使用Visual Studio和其他编辑器时,这是目前最适合我的解决方案:

使用鼠标,我选择放在尖括号之间的字符:

if (true) {\n
\t int i = 1;<\n
\t i *= 2;>\n
\t i += 3;\n
}\n

现在点击退格键,您可以一次性删除该行,而无需删除任何其他字符。这适用于几个连续的线路。另外,它可以用于移调线。您可以将尖括号之间的选择拖动到标有插入符号的点:

if (true) {\n
\t int i = 1;<\n
\t i *= 2;>\n
\t i += 3;^\n
}\n

这会让你:

if (true) {\n
\t int i = 1;\n
\t i += 3;<\n
\t i *= 2;>\n
}\n

第3行和第4行已经转换。

这个主题有不同之处。如果要删除第3行,还可以选择以下字符:

if (true) {\n
\t int i = 1;\n
<\t i *= 2;\n
>\t i += 3;\n
}\n

实际上,如果您告诉它选择一个完整的行,这就是Visual Studio的功能。您可以通过单击代码与红色圆圈所在的列之间的边距来指明断点。鼠标指针在该区域中进行镜像,以便将其区分得更好,但我认为它太窄了,并且在物理上与我想要选择的代码相差太远。

也许这种方法对其他人也很有用,即使它只是让他们知道在选择/删除文本时如何处理新行:)它适用于大多数非专业文本编辑器。但是,鉴于Visual Studio(我最常用)的大量功能和插件,我确信有更好的方法可以使用它来删除和移动代码行。在不同块之间移动代码时自动获得缩进是很好的(即没有点击“格式文档/选择”)。我期待着建议;没有关于微优化的咆哮,请:)


答案摘要

关于Visual Studio:使用光标键导航。

最符合我修改和编辑代码风格的解决方案是 Eclipse 方式:

您可以选择多行连续的代码行,其中可以仅部分选择第一行和最后一行。按ALT + {向上,向下}可上下移动整行(不仅仅是选择),随时修改缩进。点击CTRL + D会完全删除这些行(不仅仅是选择)而不会留下任何不需要的空行。我很想在Visual Studio中看到这个!

11 个答案:

答案 0 :(得分:4)

在Emacs中:

  • kill-line C-k
  • 转置线C-x C-t

C-a C-k C-k - 杀死整行,包括换行符(或C-S-backspace的kill-whole-line)。

C-u&lt; number&gt; C-k - kill&lt; number&gt; (包括换行符)。

C-y - 收回最近被杀的文字(又称粘贴)

答案 1 :(得分:4)

在VIM中:

  • 删除整行,包括换行符:dd
  • Transpose lines: dd p
  • 
    
  • Transpose lines: dd p
  • 或者你可以复制这些行:

    :10,15t20
    

    答案 2 :(得分:3)

    我所做的是,从行开头的光标开始(在某些编辑器中你必须按两次才能执行此操作),按住shift并按下直到选中我要删除的所有行。然后我按删除。

    答案 3 :(得分:2)

    在Eclipse中,您可以 ALT - ALT - 来移动一条线。我发现这非常有用,以及 ALT - SHIFT - {}复制一行。此外,它不会破坏您的剪贴板。它甚至会在线条移动时纠正缩进!

    答案 4 :(得分:1)

    学习使用光标键。

    对于移动线,我执行以下操作:

    1. 使用 / 移动到您要复制的行。
    2. 如果没有,请点击 Home ,如果它将光标放在空格之后再次点击。
    3. 然后按 Shift + 选择要移动的一行(或多行)
    4. Ctrl + X 切断线。
    5. 向上/向下移动到您要插入的行
    6. 控制 + V
    7. 这应该适用于Windows上的几乎任何文本编辑器。

      当删除行时,我仍然倾向于使用 Ctrl + X (虽然我想我也使用退格键)因为上面是如此根深蒂固的我如何编辑,它是也更宽容。

      (虽然我发现它们在我使用Mac的时候会迷失方向,但我认为Apple可能已经采用了他们设置Home / End的方式,在Mac上跳过单词快捷方式)

    答案 5 :(得分:1)

    添加到现有的vim答案,您可以使用d和任何光标移动命令从光标的当前位置删除到新位置。例如,要删除...

    • ...到段落结尾(通常表示“到下一个空行”):d}
    • ...包含光标和后5行的行:d5j
    • ...一组括号,括号等及其内容:d%(光标位于打开或关闭paren / brace /等)。
    • ...到“foo”这个词的第三个外观:d3 / foo

    非常灵活。

    答案 6 :(得分:0)

    使用简要键盘映射,使用 Alt + L 来标记线条和数字键盘上的 - 键(或 Alt + D )来切断线到剪贴板。剪切将完全删除该行,包括换行符。

    点击数字小键盘上的 Ins 键会将该行重新放回包含换行符的文档中。

    恕我直言简短是一个设计精良的键盘映射。

    PS:我认为MSVC可以选择模拟Brief键盘映射。

    答案 7 :(得分:0)

    Eclipse中的

    我使用 CTRL + D 来删除一行(或一对) 对于很多行,我会用鼠标或 SHIFT + ARROW 选择它们,然后按 DEL 键。

    答案 8 :(得分:0)

    除了上述内容之外,使用Resharper为Visual Studio执行您想要的操作。你会发现最好的VS插件。它提供了许多不同的命令,可以帮助在那里和任何地方移动/删除/复制代码。更不用说重构/生成/等代码了。

    Ctrl - Shift - Alt 会移动方法向上或向下,排队或向下等 Shift - Del - 删除当前行,但将其放入剪贴板(除非您将设置修改为不执行此操作 - 我正在尝试回忆这是否是VS标准快捷方式,不仅仅是Resharper - 太长了)。 Ctrl - C Ctrl - X 而不选择复制/剪切当前行。 等等...

    有关完整列表,请参阅http://www.jetbrains.com/resharper/docs/ReSharper40DefaultKeymap2.pdf

    答案 9 :(得分:0)

    Ctrl + Shift + L 删除行而不将其复制到缓冲区。

    答案 10 :(得分:0)

    在Emacs中,除了C-k(以及带有数字前缀arg的C-k,要杀死N行),您只需使用鼠标:

    • 要杀死一行: 三击它,然后右击两次

    • 要杀死多行: 三击第一行,然后右键点击最后一行(“第一行”可以在“最后“行 - ”第一个“这里意味着你点击的第一个”

    相关问题