【发布时间】:2012-04-17 18:11:27
【问题描述】:
是否有任何文本编辑器(适用于 Windows)良好 支持 混合 空格和制表符,适用于 C++/C#/Java 等语言(以及 Python 的奖励积分) /Ruby/等)?
即制表符将用于缩进,空格将用于对齐。
例如,→ 代表一个制表符,. 代表一个空格,■ 代表光标的当前位置。
如果我的文本编辑器中有以下内容:
template<class T1,
.........class T2>
class Foo
{
→ template<int M,
→ .........int N>
→ void foo(int bar,■
}
我希望能够按⏎Enter键,看看:
template<class T1,
.........class T2>
class Foo
{
→ template<int M,
→ .........int N>
→ void foo(int bar,
→ .........■
}
之后我应该可以键入下一个参数,关闭括号,然后按 ⏎ Enter,然后使用制表符/空格让光标自动回到正确的位置,如下所示:
template<class T1,
.........class T2>
class Foo
{
→ template<int M,
→ .........int N>
→ void foo(int bar,
→ .........int baz) {
→ → ■
}
当然,如果我按下 Backspace 或 Shift-Tab 或其他什么,它应该清除到适当的停止 - 这可能是与当前缩进类型相同的缩进的开头一。诸如此类。
注意:
我意识到许多编辑器(SciTE、Visual Studio,可能还有 Emacs、Vim 等)都可以用正则表达式(或粗略的解析代码)编写脚本来做一些有效的事情,哦,80 % 的时间。
但我正在寻找一些希望能够提供更多强大支持的东西,以及对当前语言的词法支持以弄清楚要做什么。毕竟,编辑器错误不应该比手动缩进更难修复——否则我只能手动进行,永远不要使用该功能!
【问题讨论】:
-
@Luiggi:Notepad++ 很烂,尤其是在这方面。顺便说一句,好问题。我认为问题在于大多数人不使用这种类型的缩进(虽然我非常喜欢这样排列)
-
jozefg:这是无可争辩的事实,但您能指出如何在 VIM 中解决这个特殊问题吗?我会对此感兴趣
-
进入线程 5 分钟,cmets 中已经存在“
很烂”和“使用 ”。伙计们,破坏合法问题的方法。 -
在 Python 等布局敏感的语言中使用混合制表符和空格确实是一个错误。而在所有其他方面,它只是丑陋的。
-
只用空格缩进。标签比它的价值更麻烦。
标签: c# java c++ windows text-editor