编辑:这个问题被标记为“托尔斯泰”,以感谢我写作的质量和长度:) 只需阅读第一段和最后一段就足够了:) 如果你倾向于用鼠标选择和移动代码,那么里面的东西中间对你来说可能很有趣。
这个问题是关于你一般如何使用文本编辑器的。我正在寻找删除多行代码的最佳方法(无意为其申请专利:)这延伸到转置行,即在其他地方删除和添加它们。最重要的是,我不想创建任何必须单独删除的空行。有点像 Visual Studio 的 SHIFT+DELETE 功能,但同时适用于多行。
假设您想从以下代码中删除第 3 行(制表符和换行符也可视化)。天真的方法是选择尖括号之间的文本:
如果(真){\n \t int i = 1;\n \t <i *= 2;>\n \ti += 3;\n }\n
然后按退格键。这将创建一个空行。再按两次退格键删除 \t 和 \n。
你最终得到:
如果(真){\n \t int i = 1;\n \ti += 3;\n }\n
当您尝试选择整行时,Visual Studio 不允许您选择尾随换行符。例如,将光标放在一行上并按 SHIFT+END 不会选择末尾的换行符。如果您使用鼠标也不会选择换行符,即单击一行的中间并将光标一直拖到右侧。如果您做出的选择至少跨越两行,您只选择尾随的换行符。我使用的大多数编辑器都是这样做的;Microsoft 写字板和 Word 是反例(我在删除文本时经常会出现换行错误;至少 Word 有一种方法可以显式显示行尾和段尾字符)。
通常在使用 Visual Studio 和其他编辑器时,这是目前最适合我的解决方案:
使用鼠标,我选择放在尖括号之间的字符:
如果(真){\n \t int i = 1;<\n \ti *= 2;>\n \ti += 3;\n }\n
现在按退格键,您可以一次性删除该行,而无需删除任何其他字符。这同时适用于几条连续的线。此外,它还可用于转置行。您可以将尖括号之间的选择拖动到用插入符号标记的点:
如果(真){\n \t int i = 1;<\n \ti *= 2;>\n \ti += 3;^\n }\n
这给你留下了:
如果(真){\n \t int i = 1;\n \ti += 3;<\n \ti *= 2;>\n }\n
其中第 3 行和第 4 行交换了位置。
这个主题有一些变化。当您要删除第 3 行时,您还可以选择以下字符:
如果(真){\n \t int i = 1;\n <\ti *= 2;\n >\ti += 3;\n }\n
事实上,如果你告诉它选择一整行,这就是 Visual Studio 所做的。您可以通过单击代码与指示断点的红色圆圈所在的列之间的边距来执行此操作。鼠标指针在该区域镜像以更好地区分它,但我认为它太窄并且与我要选择的代码相距太远。
也许这种方法对其他人也很有用,即使它只是让他们知道在选择/删除文本时如何处理换行符:) 它适用于大多数非专业文本编辑器。但是,鉴于 Visual Studio 的大量功能和插件(我使用最多),我确信有更好的方法来使用它来删除和移动代码行。在不同块之间移动代码时自动获得正确的缩进会很好(即不点击“格式化文档/选择”)。我期待着建议;请不要对微优化大喊大叫:)
答案摘要
关于 Visual Studio:用光标键很好地导航。
最适合我浏览和编辑代码风格的解决方案是Eclipse方式:
您可以选择几行连续的代码,其中第一行和最后一行可能只被部分选择。按下 ALT+{up,down} 可以上下移动整行(不仅仅是选择),同时修正缩进。按 CTRL+D 将完全删除行(不仅仅是选择),而不会留下任何不需要的空行。我很想在 Visual Studio 中看到这个!