是否有任何文本编辑器(适用于 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 % 的时间。
但我正在寻找希望有更多强大支持的东西,对当前语言提供词法分析支持以弄清楚要做什么。毕竟,编辑器的错误不应该比首先手动缩进更难修复——否则我只会手动进行,而永远不会使用该功能!
最佳答案
不确定这是否有资格成为答案。然而,我的gvim当前的 vimrc 使用制表符和空格完全符合您的要求。 我强烈建议使用 Gvim .这是个人选择的问题,可能有更好或更差的编辑器。
你可以使用 se syn= 命令在 vim 上高亮任何语言
您找不到的是词法支持或智能感知 - 至少以可用的方式。
看看截图。这是一个链接 vimrc我已经适应了。
EDIT 我真的怀疑是否存在可以这么说的编辑器乌托邦。您可能必须根据“适合工作的正确工具”原则取得平衡。
关于c# - 支持混合空格和制表符的编辑器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10004290/
我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib
我有一个包含模块的模型。我想在模块中覆盖模型的访问器方法。例如:classBlah这显然行不通。有什么想法可以实现吗? 最佳答案 您的代码看起来是正确的。我们正在毫无困难地使用这个确切的模式。如果我没记错的话,Rails使用#method_missing作为属性setter,因此您的模块将优先,阻止ActiveRecord的setter。如果您正在使用ActiveSupport::Concern(参见thisblogpost),那么您的实例方法需要进入一个特殊的模块:classBlah
如何在ruby中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL
我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
在添加一些空格以使代码更具可读性时(与上面的代码对齐),我遇到了这个:classCdefx42endendm=C.new现在这将给出“错误数量的参数”:m.x*m.x这将给出“语法错误,意外的tSTAR,期待$end”:2/m.x*m.x这里的解析器到底发生了什么?我使用Ruby1.9.2和2.1.5进行了测试。 最佳答案 *用于运算符(42*42)和参数解包(myfun*[42,42])。当你这样做时:m.x*m.x2/m.x*m.xRuby将此解释为参数解包,而不是*运算符(即乘法)。如果您不熟悉它,参数解包(有时也称为“spl
我有一个模块:moduleMyModuledefdo_something#...endend由类使用如下:classMyCommandextendMyModuledefself.execute#...do_somethingendend如何验证MyCommand.execute调用了do_something?我已经尝试使用mocha进行部分模拟,但是当未调用do_something时它不会失败:it"callsdo_something"doMyCommand.stubs(:do_something)MyCommand.executeend 最佳答案
所以我只是对此感到好奇:DataMapper为其模型使用混合classPostincludeDataMapper::Resource虽然active-record使用继承classPost有谁知道为什么DataMapper选择这样做(或者为什么AR选择不这样做)? 最佳答案 它允许您从另一个不是DM类的类继承。它还允许动态地将DM功能添加到类中。这是我正在处理的模块中的类方法:defdatamapper_classklass=self.dupklass.send(:include,DataMapper::Resource)klass
我已经按照https://github.com/wayneeseguin/rvm#installation上的说明通过RVM安装了Ruby.有关信息,我有所有文件(readline-5.2.tar.gz、readline-6.2.tar.gz、ruby-1.9.3-p327.tar.bz2、rubygems-1.8.24.tgz、wayneeseguin-rvm-stable.tgz和yaml-0.1.4.tar.gz)在~/.rvm/archives目录中,我不想在任何目录中重新下载它们方式。当我这样做时:sudo/usr/bin/apt-getinstallbuild-essent
我使用“newapp_name”创建了一个新的Rails应用程序,我正在尝试编辑.gitignore文件,但在我的应用程序文件夹中找不到它。我在哪里可以找到它?我安装了Git。 最佳答案 .gitignore位于项目的root中,而不是app子目录中。首先打开终端并进入您的目录。您需要使用ls-a来显示stash文件。然后使用打开.gitignore 关于ruby-on-rails-尝试打开.gitignore以在文本编辑器中对其进行编辑,但在OSXMountainLion上找不到文件位