更改编程语法的大小写

时间:2018-08-01 19:56:21

标签: syntax notepad++ case sublimetext3

我想知道是否有一种更简单的方法,可以使用记事本++或崇高的文本按颜色逐一更改仅突出显示的彩色编程文本(用于在设置时等)的大小写。因此,例如,更改批处理文件test.bat中所有蓝色文本的大小写:

SETLOCAL DisableDelayedExpansion
FOR /F "delims=" %%A IN ('forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c 
ECHO(0x09"') DO SET "TAB=%%A"
ECHO This is a %TAB%

语法将更改为标题大小写,例如:

Setlocal DisableDelayedExpansion
For /F "delims=" %%A In ('forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c 
Echo(0x09"') Do Set "TAB=%%A"
Echo This is a %TAB%

我目前通过右键单击,然后从上下文菜单中选择“插件命令”>“使用语法突出显示复制文本”来执行此操作,将该文本复制到Microsoft Word并将其保存为html文件,然后在notepad ++中打开html文件进行编辑,然后将text-transform: uppercase;粘贴到color:blue;行下,然后再次以单词形式打开(不在编辑模式下),最后将其复制到notepad ++,但想知道是否有一种更简单的方法而不查找每个单词但相反,只是批量格式化相似颜色的单词。

1 个答案:

答案 0 :(得分:2)

Sublime具有一个称为title_case的内部命令来执行此操作,可以从菜单中以Edit > Convert Case > Title Case或从命令面板中以Convert Case: Title Case来使用。

因此,如果选择了文档中的所有关键字,则可以使用该命令执行操作。您可能必须分批执行(适度地使用双关语),例如将光标置于SETLOCAL中,并反复按 Ctrl + D 以选择所有实例,然后循环返回并做下一个关键字。

为使过程更好地自动化,可以创建一个简单的插件,该插件选择所有关键字并运行命令,以便您可以在一个简单的步骤中执行大部分操作。

下面是一个示例,您可以通过从菜单中选择Tools > Developer > New Plugin...,将存根代码替换为下面的代码,然后将Sublime保存为默认位置,例如{{ 1}}或类似的内容(仅位置和扩展名很重要):

dos_batch_case_fix.py

这将实现一个名为import sublime import sublime_plugin # A list of extra words to change the title case for that aren't considered # keywords by the dos batchfile syntax. _extra_words = ["do", "in"] class BatchTitleCaseCommand(sublime_plugin.TextCommand): """ For a dos batch file, convert the case of all keywords and all found instances of the words in _extra_words to title case. """ def run(self, edit): # Save the current selection, then clear it saved_sel = list(self.view.sel()) self.view.sel().clear() # Find everything that the syntax thinks is a keyword and add it to # the selection for region in self.view.find_by_selector("keyword"): self.view.sel().add(region) # Convert the list of extra words to a regular expression and add all # whole word matches to the selection. regex = r"\b({0})\b".format("|".join(_extra_words)) for region in self.view.find_all(regex, sublime.IGNORECASE): self.view.sel().add(region) # Convert the selection to title case. self.view.run_command("title_case") # Restore the selection to what it was on entry. self.view.sel().clear() for region in saved_sel: self.view.sel().add(region) def is_enabled(self): return self.view.match_selector(0, "source.dosbatch") 的新命令,该命令仅在批处理文件中有效。它保存当前选择,然后选择所有关键字(由当前使用的语法确定),运行命令以更改大小写,然后将原始选择放回去。您可以将此命令绑定到与其他任何内部命令相同的键。

由于这使用当前文件的语法来检测关键字是什么,因此它无法捕获batch_title_caseIN之类的东西,因为(至少当前)批处理文件的Sublime语法没有认为这些不是关键字。

因此,这也说明了如何处理这些单词。此处的代码执行不区分大小写的整个单词搜索,以搜索单词列表(以DO表示),并选择这些单词以及所选文本。

这是半危险的,因为与按语法范围进行关键字搜索不同,正则表达式搜索将在任何位置找到这些单词,包括在字符串中可能不代表关键字而仅代表常规单词的字符串中。

因此,在文件副本上使用此文件(或能够_extra_words)并确认它没有完成您原本没有期望的操作是一个好主意。

我可以想象,目视检查将比您当前使用的解决方案花费更少的精力。


潜在的变化

如果需要,可以修改上面的插件以删除保存和恢复选择的部分,以及执行undo命令;在这种情况下,该命令只会将文件中的选择更改为它认为需要加标题的单词,并允许您手动执行操作。

请注意,如果您使用包含很多关键字的非常大的文件,那么同时进行多个选择可能会使速度变慢。


调用命令

上面的插件创建了一个名为title_case的命令。有多种执行命令的方法,具体取决于您要如何执行。下面提到batch_title_case软件包的地方,可以从菜单中使用User命令来找到它。 Preferences > Browse Packages包是上述插件的存储位置,因为使用User时Sublime默认为该位置。

通过按键绑定

使用Developer > New Plugin,可以在引用该命令的窗口的右侧添加自定义绑定:

Preferences > Key Bindings

通过命令面板

可以通过将{ "keys": ["ctrl+alt+s"], "command": "batch_title_case", }, 类型的文件添加到您的sublime-commands包中并添加以下内容(例如User)来将命令添加到命令面板。 MyCustomCommands.sublime-commands将指定命令的显示方式:

caption

注意: 如上所述,该命令仅对批处理文件启用,并且“命令面板”仅显示可用命令,因此在非批处理文件中,命令不会出现在命令面板中。

通过上下文菜单

通过在[ { "command": "batch_title_case", "caption": "Command Caption Here" }, ] 包中创建一个名为Context.sublime-menu的文件,可以将该命令添加到右键单击上下文菜单中;如果已经存在这样的文件,则仅将User行添加到现有文件中的适当位置。 { ... }将指定命令的显示方式:

caption

注意: 如上所述,该命令仅对批处理文件启用,因此在非批处理文件中,菜单中的命令将显示为灰色。要将上下文菜单项隐藏在不适用的文件中,请在[ { "command": "batch_title_case", "caption": "Command Caption Here" }, ] 下的上方插件代码中添加以下几行:

is_enabled()