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

时间:2020-03-05 18:52:46  来源:igfitidea点击:

编辑:这个问题被标记为"托尔斯泰",以感谢我的写作的质量和长度:中间可能对我们很有趣。

这个问题是关于我们一般如何使用文本编辑器的。我正在寻找删除多行代码的最佳方法(无意申请专利:)这扩展到转置行,即在其他地方删除并添加它们。最重要的是,我不想创建必须单独删除的任何空白行。有点像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的大量功能和插件(我最常使用),我相信有更好的方法来使用它删除和移动代码行。在不同块之间移动代码时自动正确地使缩进效果很好(例如,无需点击"设置文档/选择格式")。我期待提出建议;请勿进行微优化,请:)

答案摘要

关于Visual Studio:使用光标键进行良好导航。

最适合我的复习和编辑代码风格的解决方案是Eclipse方式:

我们可以选择几行连续的代码行,其中第一行和最后一个选定的行可能仅被部分选择。按下ALT + {up,down}上下移动整行(不只是所选内容),随行固定缩进。按CTRL + D可以完全删除行(而不仅仅是选择行),而不会留下任何不需要的空白行。我很想在Visual Studio中看到这个!

解决方案

回答

在Emacs中:

  • 杀线C-k
  • 转置线C-x C-t

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

C-u <number>行(包括换行符)C-k -kill <number>。

C-y-取消最近杀死的文本(又名粘贴)

回答

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

回答

在VIM中:

  • 删除包括换行符的整个行:dd
  • 转置线:dd p

我们始终可以在任何命令前添加数字以重复该命令,因此要删除10行,请执行以下操作:

10 dd

我们还可以指定要删除的行范围。例如,要删除第10-15行:

:10,15d

或者,我们可以移动这些行,例如,将第10-15行移动到第20行以下:

:10,15m20

或者,我们可以复制以下行:

:10,15t20

回答

学习使用光标键。

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

  • 使用``/''移至我们要复制的行。
  • 如果尚不存在,请单击"主页",如果将光标置于空格之后,请再次单击。
  • 然后按Shift ++选择要移动的一条或者多条线
  • Ctrl + X可以剪断线。
  • 向上/向下移动到我们要插入的行
  • Ctrl + V

这几乎可以在Windows上的任何文本编辑器中使用。

当删除行时,我仍然倾向于使用Ctrl+X(尽管我猜我也使用退格键),因为上面的内容在我的编辑方式中根深蒂固,并且也更加宽容。

(尽管我发现使用Mac时他们会迷失方向,但我认为Apple可能会通过设置Home / End的方式来解决问题,跳过Mac上的单词快捷键)

回答

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

回答

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

在数字小键盘上按" Ins"键将把该行放回包含换行符的文档中。

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

PS:我认为MSVC可以模拟简短的键盘映射。

回答

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

回答

除上述内容外,请使用Resharper for Visual Studio进行所需的操作。最好的VS插件,我们将找到。它提供了许多不同的命令,可在此处和各处移动/删除/复制代码。更不用说重构/生成/等代码。

Ctrl-Shift + Alt或者``将向上或者向下移动方法,向上或者向下排列等。
Shift-Del会删除当前行,但是将其放在剪贴板中(除非我们修改设置以不执行此操作,否则我想回顾一下这是否是VS标准快捷方式,而不仅仅是Resharper太长了)。
Ctrl-C或者Ctrl-X,而不选择复制/剪切当前行。
等等……

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

回答

添加到现有的vim答案中,我们可以将d与任何光标移动命令一起使用,以从光标的当前位置删除到新位置。例如,删除...

  • ...到段落末尾(通常意思是"到下一个空白行"):d}
  • ...包含光标的行和接下来的5行:d5j
  • ...一组括号,大括号等及其内容:d%(光标放在开头或者结尾的括号/括号/等上)
  • ...到" foo"一词的第三个出现:d3 / foo

非常灵活。