我在这个站点上搜索如何更改 Sublime Text 3 中某些特定单词的颜色,但如果不替换 tmlanguage 文件就找不到它。
我想要的是为 true(使其变为绿色)和 false(使其变为红色)或诸如 $this.
我对 PHP 和 JS 范围特别感兴趣,因为我并没有真正使用任何其他语言。我试过 PersistentRegexHighlight插件,但我对结果不太满意。打开文件时文字没有颜色,而且它使用高亮,所以我不能只改变文字颜色。
我阅读了一些关于更改 PHP.tmlanguage 文件的答案,但是如果这样做,我将在未来的版本中放弃任何更改,对吗?我认为在用户目录中创建另一个 PHP.tmlanguage 会将其“添加”到主目录中,例如键绑定(bind)文件,但没有。
你知道怎么做吗?
谢谢。
最佳答案
用户目录中您自己的 PHP.tmlanguage 不起作用,因为编辑 .tmlanguage 文件是一种描述语言和设置范围的方式,而不是高亮显示的方式条款。因此,您需要执行其他操作才能在编辑器窗口中突出显示这些内容。
突出显示在 .tmTheme 文件中完成。在该文件中,您可以使用 .tmLanguage 中的范围,以便为适合该范围的文本应用颜色。
据我所知,也许我错了,不可能为语法定义创建“补丁”文件。您不能创建一个小的补丁文件来扩展 PHP 语法。语法在一个文件中描述,因此 PHP 的所有作用域都必须在一个文件中描述。如果要为 PHP 语言添加、删除或更改某些内容,则需要编辑相应的文件,该文件必须包含整个 PHP 的语法定义。好消息是,可以将 .tmLanguage 文件复制到 User 目录并确保 native 文件安全。
让我们将 PHP.tmLanguage 复制到您的 User 文件夹中并稍微编辑一下。你可以在里面找到那些字符串:
<dict>
<key>match</key>
<string>(?i)\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\b</string>
<key>name</key>
<string>constant.language.php</string>
</dict>
如您所见,现在 true 和 false 都在同一范围内,constant.language.php。您可以通过从范围中删除它们并为它们添加两个单独的范围来更改它。
<dict>
<key>match</key>
<string>(?i)\b(NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\b</string>
<key>name</key>
<string>constant.language.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(TRUE)\b</string>
<key>name</key>
<string>true.constant.language.php</string>
</dict>
<dict>
<key>match</key>
<string>(?i)\b(FALSE)\b</string>
<key>name</key>
<string>false.constant.language.php</string>
</dict>
不可能在 tmLanguage 文件中设置颜色,因为它的目的是确定范围——语言元素。在 .tmTheme 文件中完成所有语法突出显示。所以我能想到的最好的事情是将当前主题文件复制到 User 目录并编辑它。
例如,如果您当前的主题是
搜索字符串, 看起来 重新启动 ST3(看起来 ST3 在运行时不会通过更改 还有一件事,在 Slush & Poppies,您可以从 ST3/Packages/Color Scheme - Default.sublime-package\Slush & Poppies.tmTheme 到 及其设置将同时应用于 JS 和 PHP ST3/User/Data/Packages/User 目录并编辑。constant.language。它是这个 block 的一部分:<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict/>
</dict>
Slush & Poppies 没有设置着色常量。但这不是问题。在下面的代码中,我编写了一个示例,它有助于理解如何应用颜色设置。所以,让我们把上面的 block 改成这个:<dict>
<key>name</key>
<string>Built-in constant</string>
<key>scope</key>
<string>constant.language</string>
<key>settings</key>
<dict/>
</dict>
<dict>
<key>name</key>
<string>TRUE</string>
<key>scope</key>
<string>true.constant.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#008900</string>
</dict>
</dict>
<dict>
<key>name</key>
<string>FALSE</string>
<key>scope</key>
<string>false.constant.language</string>
<key>settings</key>
<dict>
<key>foreground</key>
<string>#890000</string>
</dict>
</dict>
.tmLanguage 文件完全更新作用域列表,所以最好重新启动它)并选择菜单“首选项”→“配色方案”→“用户” → “雪泥和罂粟花”。在此主题中,true 以绿色突出显示,false 以红色突出显示。当然,您可以编辑任何您想要的配色方案,而不仅仅是这个。.tmTheme 文件中,您不能使用整个范围名称,但可以使用它的一部分。例如,可以使用 false.constant.language 而不是 false.constant.language.php。当您使用 false.constant.language 时,设置将应用于名称以 false.constant.language 开头的所有范围。例如,如果您在 PHP.tmLanguage 中定义了 false.constant.language.php 并在 JavaScript.tmLanguage 中定义了 false.constant.language.js,则可以使用 .tmTheme 文件中的>false.constant.languagefalse。
关于php - 更改sublime text 3中特定单词的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19235792/
如何正确创建Rails迁移,以便将表更改为MySQL中的MyISAM?目前是InnoDB。运行原始执行语句会更改表,但它不会更新db/schema.rb,因此当在测试环境中重新创建表时,它会返回到InnoDB并且我的全文搜索失败。我如何着手更改/添加迁移,以便将现有表修改为MyISAM并更新schema.rb,以便我的数据库和相应的测试数据库得到相应更新? 最佳答案 我没有找到执行此操作的好方法。您可以像有人建议的那样更改您的schema.rb,然后运行:rakedb:schema:load,但是,这将覆盖您的数据。我的做法是(假设
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我尝试使用不同的ssh_options在同一阶段运行capistranov.3任务。我的production.rb说:set:stage,:productionset:user,'deploy'set:ssh_options,{user:'deploy'}通过此配置,capistrano与用户deploy连接,这对于其余的任务是正确的。但是我需要将它连接到服务器中配置良好的an_other_user以完成一项特定任务。然后我的食谱说:...taskswithoriginaluser...task:my_task_with_an_other_userdoset:user,'an_othe
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
假设我有一个FireNinja我的数据库中的对象,使用单表继承存储。后来才知道他真的是WaterNinja.将他更改为不同的子类的最干净的方法是什么?更好的是,我很想创建一个新的WaterNinja对象并替换旧的FireNinja在数据库中,保留ID。编辑我知道如何创建新的WaterNinja来self现有FireNinja的对象,我也知道我可以删除旧的并保存新的。我想做的是改变现有项目的类别。我是通过创建一个新对象并执行一些ActiveRecord魔法来替换行,还是通过对对象本身做一些疯狂的事情,或者甚至通过删除它并使用相同的ID重新插入来做到这一点,这是问题的一部分。
如何使用Ruby的默认Curses库获取颜色?所以像这样:puts"\e[0m\e[30;47mtest\e[0m"效果很好。在浅灰色背景上呈现漂亮的黑色。但是这个:#!/usr/bin/envrubyrequire'curses'Curses.noecho#donotshowtypedkeysCurses.init_screenCurses.stdscr.keypad(true)#enablearrowkeys(forpageup/down)Curses.stdscr.nodelay=1Curses.clearCurses.setpos(0,0)Curses.addstr"Hello
状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基
我想解析一个已经存在的.mid文件,改变它的乐器,例如从“acousticgrandpiano”到“violin”,然后将它保存回去或作为另一个.mid文件。根据我在文档中看到的内容,该乐器通过program_change或patch_change指令进行了更改,但我找不到任何在已经存在的MIDI文件中执行此操作的库.他们似乎都只支持从头开始创建的MIDI文件。 最佳答案 MIDIpackage会为您完成此操作,但具体方法取决于midi文件的原始内容。一个MIDI文件由一个或多个音轨组成,每个音轨是十六个channel中任何一个上的
在读取/解析文件(使用Ruby)时忽略某些行的最佳方法是什么?我正在尝试仅解析Cucumber.feature文件中的场景,并希望跳过不以Scenario/Given/When/Then/And/But开头的行。下面的代码有效,但它很荒谬,所以我正在寻找一个聪明的解决方案:)File.open(file).each_linedo|line|line.chomp!nextifline.empty?nextifline.include?"#"nextifline.include?"Feature"nextifline.include?"Inorder"nextifline.include?